2013-08-26 91 views
1

在我們的代碼的一部分,我試圖綁定一個mac地址與我們的許可證文件,我面臨一個問題,我的代碼找出機器的所有mac地址沒有返回所有的物理mac地址。下面是代碼讓所有的M​​AC地址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「三次。任何想法爲什麼這會發生,我該如何解決它。

任何幫助將十分讚賞:)

+0

FYI,這發生在Windows中。 –

回答