为什么java NetworkInterface.getHardwareAddress在Windows上返回空字节数组?

时间:2011-03-30 11:11:22

标签: java network-programming

我在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的javadoc中所述的null。有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

我这样做了,看到环回(首先是apeared)没有mac地址。

我的猜测是null用于当OS返回MAC不可用时。但是它可能会返回空数据。

在Linux上,它没有向我显示环回。

答案 1 :(得分:0)

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