Поддержка 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 ответа:
Проблема решена. Я устанавливал неверное системное свойство. Правильное системное свойство, которое должно быть установлено, является
System.setProperty("java.net.preferIPv6Addresses","true")
После установки этого свойства отобразится IPv6-адрес, назначенный в сетевом соединении.
Петлевой адрес IPv6 можно получить, используя приведенный ниже код.
InetAddress.getLoopbackAddress().getHostAddress()
Можно использовать класс Inet6Address.
java.net.Inet6Address.getHostAddress()
Обратитесь к этому вопросу. InetAddress.getHostAddress () соответствует ipv6?