1
在我们的代码的一部分,我试图绑定一个mac地址与我们的许可证文件,我面临一个问题,我的代码找出机器的所有mac地址没有返回所有的物理mac地址。下面是代码让所有的MAC地址NetworkInterface不返回所有的mac地址
public static Collection<String> getAllLocalMacAddresses() throws IOException {
final Enumeration<NetworkInterface> inetAddresses = NetworkInterface.getNetworkInterfaces();
final Collection<String> addresses = new LinkedList<String>();
while(inetAddresses.hasMoreElements()){
final byte[] macBytes = inetAddresses.nextElement().getHardwareAddress();
if(macBytes == null)
continue;
addresses.add(getMacAddress(macBytes));
}
return addresses;
}
static String getMacAddress(byte[] macBytes){
final StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < macBytes.length; i++){
strBuilder.append(String.format("%02X%s", macBytes[i],
(i < macBytes.length - 1) ? ":" : ""));
}
return strBuilder.toString().toUpperCase();
}
这里是我从这个方法得到的结果
[, 00:00:00:00:00:00:00:E0, 00:26:B9:30:6D:CB, 00:26:B9:30:6D:CB, 00:00:00:00:00:00:00:E0, 00:26:B9:30:6D:CB, 02:26:B9:30:6D:C1, 00:26:B9:30:6D:CB, 00:00:00:00:00:00:00:E0]
从“IPCONFIG/ALL”显示我的这些物理地址的输出(我可以贴出来,如果需要把这个命令)
00-26-B9-30-6D-C3
02-26-B9-30-6D-C1
00-26-B9-30-6D-C5
00-26-B9-30-6D-C9
00-26-B9-30-6D-CB
00-00-00-00-00-00-00-E0
现在,如果你看到Java代码没有返回地址为“00-26-B9-30-6D-C3”,也印有地址“00: 26:B9:30:6D:CB“三次。任何想法为什么这会发生,我该如何解决它。
任何帮助将十分赞赏:)
FYI,这发生在Windows中。 –