Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python twisted未检测到客户端断开连接_Python_Networking_Network Programming_Twisted - Fatal编程技术网

Python twisted未检测到客户端断开连接

Python twisted未检测到客户端断开连接,python,networking,network-programming,twisted,Python,Networking,Network Programming,Twisted,有人有这方面的经验吗?我有一个扭曲的应用程序。客户端连接到服务器。我添加了一个特性,这样,如果客户端连接到服务器,但已经有来自该IP地址的客户端在运行,它将断开新客户端的连接 偶尔,我会在不手动关闭Python程序的情况下关闭客户机(确切地说是VM)。当我这样做时,偶尔但通常情况下,服务器不会检测到任何断开连接。当计算机返回并尝试重新连接时,服务器坚持认为已经有来自该IP的连接。到目前为止,我找到的唯一解决方案是重新启动服务器 没有断开连接会不会很奇怪?扭曲的虫子 我99%确定我处理断开连接的代

有人有这方面的经验吗?我有一个扭曲的应用程序。客户端连接到服务器。我添加了一个特性,这样,如果客户端连接到服务器,但已经有来自该IP地址的客户端在运行,它将断开新客户端的连接

偶尔,我会在不手动关闭Python程序的情况下关闭客户机(确切地说是VM)。当我这样做时,偶尔但通常情况下,服务器不会检测到任何断开连接。当计算机返回并尝试重新连接时,服务器坚持认为已经有来自该IP的连接。到目前为止,我找到的唯一解决方案是重新启动服务器

没有断开连接会不会很奇怪?扭曲的虫子


我99%确定我处理断开连接的代码不是bug。我的代码设置为每当连接丢失时调用
connectionLost
,包括大多数关闭机器的情况,它要么记录一个字符串,说明断开了什么,要么在发生异常时抛出异常。这两件事都没有出现在日志中。

嘿,我真不敢相信我忘记了在网络课上学到的一切

(2:09:44 PM) coworker: this is the expected behaviour
(2:10:15 PM) coworker: the server has no way to know if someone dies, or is just quiet
(2:10:35 PM) coworker: unless ofcourse the server has some kind of ping/keepalive message
(2:15:38 PM) claudiu: ah so if they have no communicatin
(2:15:42 PM) claudiu: there's no way to tell that a TCP connection has died
(2:15:47 PM) claudiu: i remember learning that now, yes..
(2:16:23 PM) claudiu: but if i just make the server ping the client then it'll figure out soon enough from lack of ACKs that it's dead, right?
(2:16:45 PM) coworker: right

这是一个,尽管它与Twisted没有任何关系。

Twisted框架在所有概念级别定义了事件和eventHandler—传输/连接、协议等,以处理断开连接。因此,检查代码会有所帮助。您可以发布一个显示这种行为的简化版本的代码。@pyfunc:我会仔细研究代码。我现在怀疑网络问题,因为我让客户端不断尝试重新连接,在某些情况下,它最终能够连接(尽管在其他情况下,不是)。