我正在尝试在装有Windows 7操作系统的本地系统上测试Java程序的IPv6支持。我已分配 IPv6 地址,并在网络连接中禁用了 IPv4。
当我执行ipconfig
命令时,我得到IPv6地址作为输出。
但是,当我执行下面的java代码时,我得到127.0.0.1
这是一个IPv4地址
System.setProperty("java.net.preferIPv6Stack","true");
InetAddress addr = InetAddress.getLocalHost();
System.out.println(addr.getHostAddress());
根据我的理解,上面的代码应该打印0:0:0:0:0:0:0:1
。
我错过了什么吗?
已解决。我设置了错误的系统属性。需要设置的正确系统属性是
System.setProperty("java.net.preferIPv6Addresses","true")
设置此属性后,将显示在网络连接中分配的 IPv6 地址。
可以使用以下代码检索 IPv6 环回地址。
InetAddress.getLoopbackAddress().getHostAddress()
您可以使用 Inet6Address 类。
java.net.Inet6Address.getHostAddress()
请参考这个问题。InetAddress.getHostAddress() ipv6 兼容?