如何检测和删除扭曲的死TCP连接?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测和删除扭曲的死TCP连接?相关的知识,希望对你有一定的参考价值。
我正在运行一个带有扭曲的Iot套接字服务器。后来我发现设备是否是硬件复位,TCP连接仍然保留在服务器端。我想由于微控制器已经复位,TCP连接没有时间断开连接。
由于我只允许一个设备连接一个,如果TCP连接失效,并且服务器没有得到断开连接请求,新的连接请求将被拒绝。
是的,我确实在扭曲中定义了一个超时计时器。但我们认为超时计时器太长,大约5分钟。等待5分钟后,设备可以重新连接到服务器。
处理此类问题的任何想法?到目前为止,我通过web api添加了一个用户命令,以触发对socket服务器的disconnect命令并允许新的连接。
但任何想法更好吗? Ping回来?
答案
我认为你需要实现心跳,在特定的时间间隔,客户端必须向服务器发送一些数据/事件(心跳)。
服务器可以跟踪那些心跳事件并设置超时,如果一段时间内没有来自客户端的心跳,您可以认为客户端连接现在已经死亡,并且可以使用传输对象的lossConnection方法断开客户端连接。您可以在所有协议类中找到传输对象。
transport.loseConnection()
我在实时游戏服务器中使用这种机制。
以上是关于如何检测和删除扭曲的死TCP连接?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测企业 Java 项目(Java + JSP + Javascript)中的死代码?