我有一个返回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
}
}
答案 0 :(得分:3)
就个人而言,我认为这是JVM本机代码中的一个错误。如果同一接口同时拥有v4和v6地址,则会感到困惑。
设置此属性后,问题就消失了,
java.net.preferIPv4Stack=true