gpt4 book ai didi

java - 如何获取 NIO DatagramChannel 的 remoteAddress()

转载 作者:行者123 更新时间:2023-12-04 05:12:02 24 4
gpt4 key购买 nike

我正在使用 NIO 编写一些客户端代码来监听来自多个服务器的 UDP 数据包(其中许多被配置为回复同一个端口)。我尝试为每个已知服务器设置专用 channel 失败了NIO. 2 clients binding to same port, only 1 can read .

所以我现在尝试在不指定目标的情况下绑定(bind)到端口

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 因为我没有配置它。那么如何确定这个数据包的来源呢?

最佳答案

DatagramPacket 的源地址在数据包中。请参阅 Javadoc。或者,如果您连接 DatagramChannel 或其底层 DatagramSocket,您可以从那里获取它……但不是其他方式。

关于java - 如何获取 NIO DatagramChannel 的 remoteAddress(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com