【发布时间】:2012-09-03 14:18:23
【问题描述】:
尝试使用 getHardwareAddress() 方法获取我的网卡的 mac 地址,但是根据 NetworkInterface.getNetworkInterfaces() 我有超过 20 个网络接口。我通过检查其他属性将其缩小到一个,但这是否适用于所有(或至少在大多数情况下)和操作系统,仅在 WIndows 7 PC 上尝试过。
如果一台计算机有两个网卡,我可以找出哪个网卡实际用于当前的互联网连接吗?
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements())
{
NetworkInterface ni = e.nextElement();
if(ni!=null && ni.getHardwareAddress()!=null &&ni.getInetAddresses().hasMoreElements() && ni.supportsMulticast())
{
String macAddress = Hex.encodeHexString(ni.getHardwareAddress());
System.out.println("MACADDRESSIS"+macAddress);
}
}
【问题讨论】:
-
MAC地址可以这么轻松改,希望大家不要太依赖它来保证安全
-
所有 MAC 地址都可能被使用。
-
@Peter Lawrey On Windows ipconfig 清楚地显示了正确的mac地址,所以我只是问如何以纯Java方式做到这一点
-
在 Windows 上
ipconfig /all向您显示所有 MAC 地址,在 Java 中它应该这样做。在我的 Windows 7 上,它显示相同的 MAC 地址。
标签: java networking mac-address