Windows 7上的哪个配置可能会对Java中的NetworkInterface.getHardwareAddress()产生影响?
我正在使用一个使用Java API的非常有用的工具来显示网络信息: 代码在Windows XP、XP 64和Debian上运行 我在Win7上发现了两种不同的行为:我公司的电脑和我的电脑。 显示的信息与Windows 7上的哪个配置可能会对Java中的NetworkInterface.getHardwareAddress()产生影响?,java,windows-7,network-interface,Java,Windows 7,Network Interface,我正在使用一个使用Java API的非常有用的工具来显示网络信息: 代码在Windows XP、XP 64和Debian上运行 我在Win7上发现了两种不同的行为:我公司的电脑和我的电脑。 显示的信息与ipconfig/all不同,我只获得最后一个虚拟网卡的物理地址 我使用Java1.6U32、1.7U21和1.7U40(两个版本都是x86/64)重现了这个问题:查看,eth3和eth4返回了错误的mac地址 我认为代码是正确的:这与建议的堆栈溢出相同,结果在我的个人计算机上是正确的 有人知道
ipconfig/all
不同,我只获得最后一个虚拟网卡的物理地址
我使用Java1.6U32、1.7U21和1.7U40(两个版本都是x86/64)重现了这个问题:查看,eth3和eth4返回了错误的mac地址
我认为代码是正确的:这与建议的堆栈溢出相同,结果在我的个人计算机上是正确的
- 有人知道哪些参数可能会影响结果吗
- 我应该在Windows上检查哪些设置以确定 不同的机器
- 有什么建议吗
待办事项
我将尝试禁用虚拟接口,然后重新启动该工具。(需要IT干预…。我也有同样的问题。以下是使用VMVare虚拟卡在我的Windows 7计算机上运行的代码:
private String getMacJava5() throws Exception {
String mac = "";
InetAddress ip = InetAddress.getLocalHost();
String[] command = {"ipconfig", "/all"};
Pattern physAddr = Pattern.compile("\\s*Physi.*: (.*)");
Pattern ipAddr = Pattern.compile("\\s*IPv.*: ([^(]*).*");
Process p = Runtime.getRuntime().exec(command);
BufferedReader inn = new BufferedReader(new InputStreamReader(p.getInputStream()));
while (true) {
String line = inn.readLine();
if (line == null) {
break;
}
Matcher mm = physAddr.matcher(line);
if (mm.matches()) {
mac = mm.group(1);
}
mm = ipAddr.matcher(line);
if (mm.matches()) {
if (mm.group(1).equals(ip.getHostAddress())) {
break;
}
mac = "";
}
}
return mac + " IP: " + ip.getHostAddress();
}
你的代码怎么样?您是否将字节转换为整数以将mac显示为字符串?可能重复@AbhijithNagarajan,我知道如何检索网络信息。我的代码在Windows XP或Debian上运行。问题是这个java API没有在Windows 7上提供正确的信息。您如何确定检查mac地址的接口?当我枚举所有接口时,我得到了
ipconfig/all
@Petesh报告的正确地址,我没有在任何接口上进行筛选,我正在显示所有接口的所有信息。你也有虚拟接口吗?我试过这个解决方案,但它不是跨平台的。linux或OSX呢?ifconfig
是否授权非sudoers使用?