Влияет на порядок перечисления NetworkInterface.getNetworkInterfaces в Java 6 в Linux - PullRequest
8 голосов
/ 19 мая 2011

В каком порядке NetworkInterface.getNetworkInterfaces() возвращает перечисление сетевых интерфейсов?Есть ли способ повлиять на это на уровне JVM или на уровне ОС Linux?

Ответы [ 3 ]

5 голосов
/ 19 мая 2011

Согласно источнику OpenJDK (находится в src/solaris/native/java/net/NetworkInterface.c, метод enumInterfaces), он сначала возвратит интерфейсы IPv4 (метод enumIPv4Interfaces), а затем интерфейсы IPv6 (метод enumIPv6Interfaces). ).

Порядок в этих категориях, по-видимому, тот же, что используется ОС (она использует SIOCGIFCONF ioctl).

Обратите внимание, что это зависит от реализации и не определено , поэтому любая реализация может очень легко сделать это по-другому.

1 голос
/ 19 мая 2011

Если вы посмотрите на источники, то увидите, что getNetworkInterfaces просто возвращает перечисление, которое поддерживается массивом NetworkInterface, который возвращается методом getAll (), который является нативным. Таким образом, это зависит от реализации и системы. С этим ничего не поделаешь.

1 голос
/ 19 мая 2011

Это просто делегирует нативный вызов, и нет, я не знаю ни одного способа изменить его.

...