5

我正在尝试在具有 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

我错过了什么吗?

4

2 回答 2

8

问题已解决。我设置了错误的系统属性。需要设置的正确系统属性是

System.setProperty("java.net.preferIPv6Addresses","true")

设置此属性后,将显示在网络连接中分配的 IPv6 地址。

可以使用以下代码检索 IPv6 环回地址。

InetAddress.getLoopbackAddress().getHostAddress()
于 2013-09-09T11:38:15.647 回答
2

您可以使用Inet6Address类。

java.net.Inet6Address.getHostAddress()

参考这个问题。 InetAddress.getHostAddress() ipv6 兼容?

于 2013-09-09T11:30:04.983 回答