NetworkInterface не возвращает все MAC-адреса

В части нашего кода я пытаюсь связать 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». Любая идея, почему это происходит и как я могу это исправить.

Любая помощь будет принята с благодарностью :)


person Raghvendra Singh    schedule 26.08.2013    source источник
comment
К вашему сведению, это произошло на коробке Windows.   -  person Raghvendra Singh    schedule 27.08.2013


Ответы (1)


Попробуйте http://docs.oracle.com/javase/6/docs/api/java/net/NetworkInterface.html#getSubInterfaces() — это может быть виртуальный интерфейс

person Ashwin Jayaprakash    schedule 07.11.2013