1

我有一个返回 ipv4 地址(4 个八位字节)的 InterfaceAddress。然而,网络前缀长度似乎是与接口关联的 ipv6 地址(它返回为 128)。如何找到正确的网络前缀长度?

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
    }
}
4

1 回答 1

3

就个人而言,我认为这是 JVM 的本机代码中的一个错误。当您同时拥有同一个接口的 v4 和 v6 地址时,就会感到困惑。

设置此属性后,我们的问题就消失了,

java.net.preferIPv4Stack=true
于 2010-06-14T16:43:45.077 回答