如何在双绞线上检测和删除无效的TCP连接?

时间:2018-09-02 08:24:37

标签: twisted

我正在扭曲运行Iot套接字服务器。后来我发现设备是否已硬件重置,TCP连接仍然保留在服务器端。我猜因为自从微控制器复位以来,TCP连接没有时间断开连接。

由于我只允许一个设备建立一个连接,所以如果TCP连接中断,并且服务器没有断开连接请求,新的连接请求将被拒绝。

是的,我确实定义了一个扭曲的超时计时器。但是我们认为超时计时器太长,大约5分钟。等待5分钟后,设备可以重新连接到服务器。

有什么想法可以解决此类问题?到目前为止,我已经通过Web API添加了一个用户命令,以触发与套接字服务器的断开连接命令并允许新连接。

但是有什么更好的主意吗?回复吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要实现心跳,客户端必须在特定间隔将一些数据/事件发送到服务器(心跳)。

服务器可以跟踪这些心跳事件并设置超时,如果一段时间没有来自客户端的心跳,则可以认为客户端连接已死,可以使用传输对象的lossConnection方法断开客户端连接。您可以在所有协议类中找到传输对象。

transport.loseConnection()

我正在实时游戏服务器中使用这种机制。