2010-06-14 7 views
1

У меня есть интерфейсAddress, который возвращает адрес ipv4 (4 октета). Однако длина сетевого префикса, по-видимому, относится к адресу ipv6, связанному с интерфейсом (он возвращается как 128). Как найти правильную длину префикса сети?Как получить маску подсети IPv4 на интерфейсе с адресом v4 и v6?

Enumeration<NetworkInterface> NetworkInterface.getNetworkInterfaces() 
for (; interfaces.hasMoreElements();) { 
    final List<InterfaceAddress>interfaceAddresses = 
     interfaces.nextElement().getInterfaceAddresses(); 
    for (final InterfaceAddress address : interfaceAddresses) { 
     assert(address.getAddress().getAddress().length == 4); // [sic] 
     assert(address.getNetworkPrefixLength() < 32); // <- Fails. Actually equals 128 
    } 
} 

ответ

3

Лично я считаю, что это ошибка в собственном коде JVM. Когда у вас есть адреса v4 и v6 для одного и того же интерфейса, он запутывается.

Проблема ушла к нам после того, как установка этого свойства,

java.net.preferIPv4Stack=true 

 Смежные вопросы

  • Нет связанных вопросов^_^