Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在同时具有v4和v6地址的接口上获取IPv4子网掩码?_Java_Ipv4_Subnet - Fatal编程技术网

Java 如何在同时具有v4和v6地址的接口上获取IPv4子网掩码?

Java 如何在同时具有v4和v6地址的接口上获取IPv4子网掩码?,java,ipv4,subnet,Java,Ipv4,Subnet,我有一个InterfaceAddress,它返回ipv4地址(4个八位字节)。但是,网络前缀长度似乎是与接口关联的ipv6地址的长度(返回为128)。如何找到正确的网络前缀长度 Enumeration<NetworkInterface> NetworkInterface.getNetworkInterfaces() for (; interfaces.hasMoreElements();) { final List<InterfaceAddress>interfa

我有一个InterfaceAddress,它返回ipv4地址(4个八位字节)。但是,网络前缀长度似乎是与接口关联的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
    }
}
枚举NetworkInterface.getNetworkInterfaces() 对于(;interfaces.hasMoreElements();){ 最后的名单= interfaces.nextElement().getInterfaceAddresses(); 用于(最终接口地址:接口地址){ 断言(address.getAddress().getAddress().length==4);//[sic]
assert(address.getNetworkPrefixLength()<32);//就个人而言,我认为这是JVM本机代码中的一个错误。当同一个接口同时具有v4和v6地址时,它会变得混乱

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

java.net.preferIPv4Stack=true