我在使用Netty框架为UDP设置会话管理系统时遇到一些问题。我对每个UDP远程客户端的新功能感到困惑。对于每个新的UDP远程客户端,该客户端会获得一个新的ChannelPipelineFactory,还是为每个新的远程客户端创建一个新的Channel?

我有2个端口,端口161和端口162都是UDP端口,并且都将从大量UDP客户端接收数据。如何区分客户?我开始基于RemoteAddress提供的DatagramPacket.sender()创建会话管理服务,但是我不知道将它附加到ChannelHandlerContext attribute()链是否安全。

最佳答案

由于UDP的连接较少,因此DatagramPacket.sender是将消息路由到适当会话的唯一选择。从概念上讲,该应用程序的UDP只有一个ChannelPipelineFactory,实际上只有一个Channel。据我所知,附加ChannelHandlerContext是不安全的。处理多个客户端的方法是使用Map,键为DatagramPacket.sender地址,值为session

关于java - Netty UDP session 管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23047266/

10-13 01:11