2010-06-14 59 views
1

我有一個InterfaceAddress返回一個ipv4地址(4個八位字節)。然而,網絡前綴長度似乎是與接口相關聯的ipv6地址(它返回爲128)。我如何找到正確的網絡前綴長度?如何在v4和v6地址的接口上獲得IPv4子網掩碼?

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 
相關問題