`

java获取本机IP和物理IP地址

阅读更多

/**
*
* @author Administrator
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class TestAddr {

/**
* 获取本机所有IP
*/
private static String[] getAllLocalHostIP() {
List<String> res = new ArrayList<String>();
Enumeration netInterfaces;
try {
netInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) netInterfaces
.nextElement();
System.out.println("---Name---:" + ni.getName());
Enumeration nii = ni.getInetAddresses();
while (nii.hasMoreElements()) {
ip = (InetAddress) nii.nextElement();
if (ip.getHostAddress().indexOf(":") == -1) {
res.add(ip.getHostAddress());
System.out.println("本机的ip=" + ip.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
return (String[]) res.toArray(new String[0]);
}
public static String getLocalIP() {
String ip = "";
try {
Enumeration<?> e1 = (Enumeration<?>) NetworkInterface.getNetworkInterfaces();
while (e1.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) e1.nextElement();
System.out.println ("getLocalIP--nic.getDisplayName ():" + ni.getDisplayName ());
System.out.println ("getLocalIP--nic.getName ():" + ni.getName ());
if (!ni.getName().equals("eth0")) {
continue;
} else {
Enumeration<?> e2 = ni.getInetAddresses();
while (e2.hasMoreElements()) {
InetAddress ia = (InetAddress) e2.nextElement();
if (ia instanceof Inet6Address)
continue;
ip = ia.getHostAddress();
}
break;
}
}
} catch (SocketException e) {
e.printStackTrace();
System.exit(-1);
}
return ip;
}
public static String getWinLocalIP ()
{
String ip = "";
try
{
Enumeration <?> e1 = (Enumeration <?>) NetworkInterface.getNetworkInterfaces ();
while (e1.hasMoreElements ())
{
NetworkInterface ni = (NetworkInterface) e1.nextElement ();
System.out.println ("getWinLocalIP--nic.getDisplayName ():" + ni.getDisplayName ());
System.out.println ("getWinLocalIP--nic.getName ():" + ni.getName ());
Enumeration <?> e2 = ni.getInetAddresses ();
while (e2.hasMoreElements ())
{
InetAddress ia = (InetAddress) e2.nextElement ();
ip = ia.getHostAddress ();
}
}
}
catch (SocketException e)
{
e.printStackTrace ();
System.exit (-1);
}
return ip;
}
/**
* 获取本机所有物理地址
*
* @return
*/
public static String getMacAddress() {
String mac = "";
String line = "";

String os = System.getProperty("os.name");

if (os != null && os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);

BufferedReader br = new BufferedReader(new InputStreamReader(p
.getInputStream()));

while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":") + 2;

mac = line.substring(index);

break;
}
}

br.close();

} catch (IOException e) {
}
}

return mac;
}

public String getMacAddress(String host) {
String mac = "";
StringBuffer sb = new StringBuffer();

try {
NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress
.getByName(host));

// byte[] macs = ni.getHardwareAddress();

// for (int i = 0; i < macs.length; i++) {
// mac = Integer.toHexString(macs[i] & 0xFF);
//
// if (mac.length() == 1) {
// mac = '0' + mac;
// }
//
// sb.append(mac + "-");
// }

} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}

mac = sb.toString();
mac = mac.substring(0, mac.length() - 1);

return mac;
}

/**
* @param args
*/
public static void main(String[] args) {
TestAddr.getAllLocalHostIP();
System.out.println("LocalIP:"+TestAddr.getLocalIP());
System.out.println("getWinLocalIP:"+TestAddr.getWinLocalIP());
System.out.println(TestAddr.getMacAddress());
}

}

分享到:
评论

相关推荐

    Java 自动获取本机IP、MAC地址

    Java 自动获取本机IP和MAC地址是一项常见的需求,在网络编程和系统管理中经常会用到。这个小工具利用了Java的网络和系统API,能够帮助用户便捷地查看本机的网络配置信息。以下是对相关知识点的详细说明: 1. **Java...

    IP工具类,通过传入的request获取ip地址(JAVA)

    本篇文章将详细解释如何在Java环境下,通过Servlet和Reactive编程模型来获取HTTP请求中的IP地址。 首先,让我们从Servlet API开始。Servlet是Java用于构建动态Web应用程序的标准接口。在Servlet中,我们通常使用`...

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    跨平台 获取本机IP/MAC地址,检测是否内网IP,字符串IP转换成Number地址

    本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...

    获取本机IP和主机名方法

    在IT领域,网络通信是不可或缺的一部分,而获取本机的IP地址和主机名则是网络通信的基础。本篇文章将深入探讨如何在不同的操作系统和编程语言环境下实现这一功能。 首先,主机名是一个标识符,用于在网络中唯一标识...

    基于 Java 使用 ARP 协议获取局域网内部活动主机的物理地址【100011074】

    首先寻找并打开适合的网络适配器,然后根据输入的局域网 IP 地址构造 ARP 的数据包,然后通过 Java 对网卡数据捕获需要用到 jpcap,jpcap 调用 wincap 实现数据包的发送,并监听返回的...IP 地址和物理地址并打印。

    pb获取ip地址/mac地址

    网络中根据IP地址获取MAC地址,通常涉及ARP(地址解析协议)。在Windows系统中,可以使用`arp -a`命令来查询本地ARP缓存,查找对应IP的MAC地址。然而,这仅适用于同一局域网内的IP。如果目标IP不在本地网络,可能...

    java拿取本机正在使用的ip及本机mac地址

    在Java编程环境中,获取本机的IP地址和MAC地址是一项常见的需求,特别是在网络通信和设备识别的场景下。本文将详细讲解如何通过Java代码来获取本机正在使用的IP地址(包括IPv4和IPv6)以及MAC地址,并排除虚拟机的IP...

    get_mac_address_using_java.rar_获取IP地址_获取mac地址

    在处理这两个文件时,`RemoteMacAddr.java`和`LocalMacAddr.java`应该分别实现了上述的远程和本地MAC地址获取功能。通过阅读和理解这两份代码,你可以更深入地了解Java中获取IP和MAC地址的实现细节,并将其应用到...

    java获取MAC物理地址和ip地址

    获取计算机的mac地址和ip地址,mac地址返回的是一个list,ip地址是string

    Servlet实现前台样式的使用ARP协议获取局域网内活动主机物理地址

    总结,通过Java Servlet结合ARP协议和jpcap库,我们可以实现一个功能,动态获取局域网内的活动主机物理地址,并结合前台样式提供友好的用户界面。这个过程涉及到网络编程、Servlet开发、前端交互等多个方面的知识,...

    java获取IP地址

    以下是一个示例,展示如何通过IP地址获取MAC地址: ```java public class GetMACAddress { public String getMACAddress(String ipAddress) { String str = "", strMAC = "", macAddress = ""; try { Process...

    java通过ip获取mac地址源代码.rar

    在Java编程语言中,获取一个特定IP地址对应的MAC(Media Access Control)地址是一项常见的网络编程任务。MAC地址是网络设备在网络层的物理地址,用于标识网络接口控制器(NIC)。在局域网(LAN)中,MAC地址是唯一...

    Android获取手机ip地址及mac地址

    在Android开发中,获取设备的IP地址和MAC地址是常见的需求,尤其是在进行网络通信或设备识别时。以下是对如何在Android应用中实现这一功能的详细解析。 ### 一、获取MAC地址 MAC地址(Media Access Control ...

    Android_获取手机IP和MAC地址

    在Android平台上,开发一...总结来说,在Android中获取手机的IP和MAC地址涉及网络接口的枚举、IP地址的筛选以及可能的权限请求。在实际操作中,开发者应当熟悉这些概念,合理利用系统提供的API,并遵循最新的隐私政策。

    Java 获取本机的IP与MAC地址实现详解

    在Java编程中,获取本机的IP地址和MAC地址是常见的网络编程需求。这些信息对于网络通信、设备识别以及安全验证等场景尤为重要。本文将详细解释如何使用Java来获取本机的IP地址和MAC地址,并分析相关代码实现。 首先...

    获取本机所有连接的IP地址

    综上所述,"获取本机所有连接的IP地址"的DEMO涵盖了网络编程中的基础操作,包括IP地址的获取和网络接口的枚举,这对于理解和开发网络相关应用至关重要。通过学习和理解这个DEMO,开发者可以更好地处理网络连接的相关...

    js获取客户端的IP mac地址

    在Web开发中,有时需要获取客户端的网络信息,比如IP地址和MAC地址。这些信息可用于多种用途,如定位用户位置、进行网络监控等。然而,由于隐私和安全方面的考虑,浏览器通常限制了直接获取MAC地址的功能。本文将...

    android 获取本机的IP地址和mac物理地址的实现方法

    在Android平台上,获取设备的IP地址和MAC物理地址是开发者常用的功能之一,特别是在网络通信或者设备定位等场景中。本文将详细介绍如何在Android应用中实现这两个功能,并提供相关的示例代码。 首先,让我们来理解...

    java通过SNMP协议获取交换机设备信息(如:交换机下的PC机MAC、IP、连接端口号等信息)

    本篇文章将深入探讨如何利用Java编程语言通过SNMP协议来获取交换机设备上的详细信息,包括PC机的MAC地址、IP地址以及连接的端口号。 首先,SNMP是一种应用层协议,它允许网络管理员远程收集和配置网络设备的数据。...

Global site tag (gtag.js) - Google Analytics