在无连接服务器中获取远程IP地址

Jun*_*Suh 3 java netty

目前我已经制作了一个无连接服务器,我想知道每个 udp 数据包的远程 ip 地址。

为此,我使用

addr = ((InetSocketAddress)ctx.getChannel().getRemoteAddress()).getAddress();
Run Code Online (Sandbox Code Playgroud)

在我的通道处理程序中,例如

public void messageReceived(ChannelHandlerContext ctx, MessageEvent ev) throws Exception 
Run Code Online (Sandbox Code Playgroud)

但是出现了NullPointerException 。我猜测,由于无连接通道,在收到每个 udp 数据包后通道已关闭。

在这种情况下我怎么知道呢?

谢谢~

Nic*_*las 5

我注意到同样的事情,即通道不会提供远程地址,但是当你考虑一下时,甚至不是通道(或其包装的 DatagramSocket)知道远程地址,而是数据报本身知道,这是有效负载。有效负载在 netty MessageEvent中传递,如果您调用MessageEvent.getRemoteAddress(),它会返回您想要的内容。