我正在使用 NIO 编写一些客户端代码来侦听来自多个服务器的 UDP 数据包(其中许多被配置为回复同一个端口)。我尝试为每个已知服务器NIO 设置专用通道失败了。2 个客户端绑定到同一个端口,只有 1 个可以读取。
所以我现在试图绑定到一个端口而不指定目的地
DatagramChannel channel = DatagramChannel.open();
channel.configureBlocking(false);
channel.socket().bind(new InetSocketAddress(port));
我的选择器现在成功接收到从我的所有服务器定向到此端口的所有 UDP 数据包
...
SelectionKey selKey = it.next();
if (selKey.isValid() && selKey.isReadable()) {
DatagramChannel sChannel = (DatagramChannel) selKey.channel();
sChannel.getRemoteAddress();//My problem lies here
....
正如预期的那样 sChannel.getRemoteAddress() 返回 null 因为我没有配置它。那么如何确定这个数据包的来源呢?