コードの一部で、MAC アドレスをライセンス ファイルにバインドしようとしていますが、マシンのすべての MAC アドレスを把握するためのコードがすべての物理 MAC アドレスを返さないという問題に直面しています。すべての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」を3回出力したことがわかります。なぜこれが起こっているのか、どうすれば修正できるのか。
どんな助けでも大歓迎です:)