Переход на Ipv6, как навязать использование конкретной области? - PullRequest
0 голосов
/ 27 ноября 2018

Я переношу свое приложение с Ipv4 (TCP) на Ipv6 (TCP).

Чтобы связаться с сервером, клиент отправляет сообщение на

fe80 :: cc3a: 61ff: fe5d: bed5

вместо

192.168.0.16

Остальная часть кода остается идентичной.

Любопытно, иногда это работает, иногда это не работает.После нескольких часов поиска я понял, что «конец» был добавлен в конец адреса Ipv6 (fe80 :: d6ae: 5ff: fe43: c6e9% wlan0).

Я заметил, что он можетбыть % p2p0 , % eth0 или % wlan0 .Зная, что для работы через Wi-Fi область должна быть % wlan0 , как я могу навязать использование определенной области?

Я посмотрел все Inet6Address методов, ничего не найдя.

1 Ответ

0 голосов
/ 27 ноября 2018

MulticastSocket.setNetworkInterface () является решением.

MulticastSocket multicastSocket = new MulticastSocket("5678");
NetworkInterface wifiInterface = null;
for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces()))
    if (networkInterface.getName().equalsIgnoreCase("wlan0")) {
        wifiInterface = networkInterface;
        break;
        }

multicastSocket.setNetworkInterface(wifiInterface);
...