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 に答える