我在使用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/