我正在使用ConnectionlessBootstrap为本地网络中的多播创建UDP套接字。只要我的VPN未激活,通道就会收到组播数据包。一旦VPN被激活,该通道就不再接收mutlicast数据包。关闭VPN连接后,通道再次开始接收数据包(不重新启动) 我创建了如下所示的频道:
DatagramChannel channel;
channel = (DatagramChannel) bootstrap.bind( new InetSocketAddress( localPort ) );
channel.joinGroup( multicastAddress.getAddress() );
我认为netty可能会意外选择错误的网络接口,所以我在bootstrap选项中手动配置它。
NetworkInterface multicastInterface = ...
bootstrap.setOption( "networkInterface", multicastInterface );
不幸的是,这并没有解决问题 我检查了wireshark当VPN处于活动状态时是否实际收到本地接口上的数据包 - 并且仍然收到数据包但是没有到达该频道。
即使VPN连接处于活动状态,有人知道如何接收多播数据包吗?