在Netty 4中检测已关闭的客户端UDP通道

时间:2013-11-24 10:53:45

标签: java udp netty

我正在使用Netty作为UDP服务器的一部分,该服务器在单个服务器通道上打开与各种客户端的多个持久连接。当客户端终止连接时,我需要执行一些清理。具体来说,我需要知道何时终止连接以及终端客户端所在的IP地址,以便我可以清理数据。

也许我误解了Netty模型,但我不确定如何检测这一点。我通常通过从DatagramPacket实例检查发件人的IP地址来区分各种客户端,也许这是错误的,我应该使用多个渠道或类似的东西?无论哪种方式,我都在寻找处理封闭连接的方法。

1 个答案:

答案 0 :(得分:3)

你误解了UDP,而不是Netty。虽然可以有应用程序管理的会话,但UDP中没有“持久连接”这样的东西,并且UDP不提供有关其他端点是否仍处于活动状态的信息。理想情况下,您将收到“关闭”消息,但您需要使用超时或其他机制来识别死连接并清除它们(对于崩溃的客户端等)。这将需要某种垃圾收集过程,可能是后台线程,它检查“最后听到的”时间戳并关闭非活动会话。