Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7上的哪个配置可能会对Java中的NetworkInterface.getHardwareAddress()产生影响?_Java_Windows 7_Network Interface - Fatal编程技术网

Windows 7上的哪个配置可能会对Java中的NetworkInterface.getHardwareAddress()产生影响?

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地址 我认为代码是正确的:这与建议的堆栈溢出相同,结果在我的个人计算机上是正确的 有人知道

我正在使用一个使用Java API的非常有用的工具来显示网络信息:

代码在Windows XP、XP 64和Debian上运行

我在Win7上发现了两种不同的行为:我公司的电脑和我的电脑。 显示的信息与
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使用?