扭曲的意外连接丢失



我使用Python Twisted编写了一个TCP服务器,用于从客户端发送/接收二进制数据。

当客户端关闭他们的应用程序或调用abortConnection方法时,我正常地获得connectionLost事件,但当客户端意外断开连接时,我没有获得断开连接事件,因此,我不能从队列中删除断开连接的客户端。

我所说的意外断开是指禁用网络适配器或不知何故失去了网络连接。

我的问题是,我该如何处理这种意外的连接丢失?

在套接字上启用TCP keepalive应该可以解决这个问题。

默认情况下,这是禁用的,因此,如果连接断开,客户端和服务器将永远不会发现连接已断开,并简单地假设没有发送数据包。keepalive将发送一个'心跳'每x间隔,看看连接是否仍然活着。

阅读更多并查看如何在这里做:如何在Twisted中使用TCP Keepalive端点?

支持跨平台意外断开(unplug)的唯一方法是在特定间隔内实现应用程序级ping消息以ping客户端

最新更新