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