如何检测和删除扭曲的死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)中的死代码?

检测 TCP 何时拥塞 python 扭曲套接字服务器

如何使用代码删除 tcp / udp 连接?

如何使用javascript修复HTML画布对象中的扭曲/扭曲和剪切图像?

扭曲的多个协议

带有 python 扭曲服务器的 Qt C++ tcp 客户端