【问题标题】:Why does java NetworkInterface.getHardwareAddress return empty byte array on Windows?为什么 java NetworkInterface.getHardwareAddress 在 Windows 上返回空字节数组?
【发布时间】:2015-08-11 18:15:43
【问题描述】:

我在一台 Windows 机器上有以下代码:

for(Enumeration enm = NetworkInterface.getNetworkInterfaces(); enm.hasMoreElements();){
  NetworkInterface network = (NetworkInterface) enm.nextElement();
    if(null != network.getHardwareAddress()){
      return EthernetAddress.valueOf(network.getHardwareAddress());
    }
 }

这会失败,因为 network.getHardwareAddress() 返回一个空字节数组,而不是如 NetworkInterface 的 javadocs 中所述的 null。有谁知道为什么会发生这种情况?

【问题讨论】:

    标签: java network-programming


    【解决方案1】:

    我这样做了,发现环回(最先出现的)没有 mac 地址。

    我的猜测是null 用于当操作系统返回 MAC 不可用时。但是它可能返回了空数据。

    在 Linux 上,它不会显示环回。

    【讨论】:

      【解决方案2】:

      如果您没有连接到任何网络(LAN 或 WAN),则从 network.getHardwareAddress() 返回的字节数组为 null,因此它返回 null 值

      【讨论】:

        猜你喜欢
        • 2016-03-12
        • 2018-12-19
        • 2011-06-25
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 2021-09-15
        相关资源
        最近更新 更多