我想获取电脑的IP地址和MAC地址。我使用以下代码来执行此操作:
InetAddress ip;
try {
ip = InetAddress.getLocalHost();
System.out.println("Current IP address : " + ip.getHostAddress());
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(sb.toString());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e){
e.printStackTrace();
}
它也有效,但有时相同的代码将IP打印为127.0.0.1并且不打印任何mac地址。怎么会?
答案 0 :(得分:4)
127.0.0.1
是始终存在的回送地址(*)。
获得价值的更好方法是获取所有网络接口(http://docs.oracle.com/javase/6/docs/api/java/net/NetworkInterface.html#getNetworkInterfaces())并过滤出IP以127
开头的网络接口。
(*)除了在网络电缆断开连接的Windows机器上...