Поддержка IPv6 в Java


Я пытаюсь протестировать программу java для поддержки IPv6 на моей локальной системе, имеющей ОС Windows 7. Я назначил 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.

Я что-то пропустил?

2 5

2 ответа:

Проблема решена. Я устанавливал неверное системное свойство. Правильное системное свойство, которое должно быть установлено, является

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

После установки этого свойства отобразится IPv6-адрес, назначенный в сетевом соединении.

Петлевой адрес IPv6 можно получить, используя приведенный ниже код.

InetAddress.getLoopbackAddress().getHostAddress()

Можно использовать класс Inet6Address.

java.net.Inet6Address.getHostAddress()

Обратитесь к этому вопросу. InetAddress.getHostAddress () соответствует ipv6?