我正在将我的应用程序从IPv4(TCP)迁移到IPv6(TCP)。
要联系服务器,客户端将消息发送到
fe80::cc3a:61ff:fe5d:bed5
而不是
192.168.0.16条
其余代码保持不变。
奇怪的是,它有时工作,有时不工作。经过几个小时的搜索,我意识到在ipv6地址的末尾添加了一个“scope”(fe80::d6ae:5ff:fe43:c6e9%wlan0)。
我注意到它可以是%p2p0、%eth0或%wlan0。知道要通过Wi-Fi工作,作用域必须是%wlan0,我如何强制使用特定作用域?
我看了所有的方法都没有发现任何东西。

最佳答案

multicast socket.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);

关于java - 迁移到Ipv6,如何强制使用特定范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53501745/

10-12 02:35