我使用 Python Twisted 编写了一个 TCP 服务器,用于从客户端发送/接收二进制数据。
当客户关闭其应用程序或调用abortConnection
方法,我得到connectionLost
事件正常,但当客户端意外断开连接时,我没有收到断开连接事件,因此,我无法从队列中删除断开连接的客户端。
意外断开连接是指禁用网络适配器或以某种方式丢失网络连接。
我的问题是,我该如何处理这种意外的连接丢失?
在套接字上启用 TCP keepalive 应该可以解决此问题。
默认情况下,这是禁用的,因此如果连接断开,客户端和服务器将永远不会发现连接已断开,并且只是假设没有发送数据包。 keepalive 将每隔 x 时间间隔发送一次“心跳”,以查看连接是否仍处于活动状态。
阅读更多内容并在此处查看如何操作:如何在 Twisted 中将 TCP Keepalive 与端点一起使用? https://stackoverflow.com/questions/20792636/how-to-use-tcp-keepalive-with-endpoints-in-twisted
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)