Я разрабатываю приложение для Android, и мне нужно использовать IPv6 для подключения к серверу.
IPv6 включен на телефоне, и я вижу свой локальный IPv6-адрес с ip addr
. Я также могу успешно использовать ping6
мой телефон с ПК и наоборот.
Но я пытаюсь получить локальные адреса на Android с помощью команды Java NetworkInterface.getNetworkInterfaces()
Я получаю только адреса IPv4.
Я также попытался открыть клиентский сокет, но строка
Socket s = new Socket(MYSERVERIPV6ADDRESS, PORT);
всегда выбрасывает java.net.SocketException: Invalid argument
.
Я уверен, что адрес правильный, потому что я пробовал с тем же кодом на своем компьютере и отлично работает.
Кажется, что IPv6 поддерживается операционной системой, но не виртуальной машиной Java. Есть ли способ решить эту проблему?