无论如何在Python SocketServer.TCPServer中检测客户端断开连接?

时间:2012-02-25 10:13:54

标签: python tcp serversocket

我尝试了以下代码但没有成功。基本上,我需要一种方法来检测客户端断开连接。我想避免一个讨厌的心跳类型系统。无论如何都要检测套接字何时不再打开(客户端已断开连接或已被断开/等)?

class ThreadedTCPRequestHandler(SocketServer.StreamRequestHandler):
    def handle(self):
        while True:
            self.data = self.rfile.readline().strip()
            if not self.data:
                print 'Client closed connection'
                break

我认为这样可行,但似乎没有(也尝试删除了strip())。有人有什么想法吗?

1 个答案:

答案 0 :(得分:2)

通常,检测到客户端已“无声”不可用是不可能的。除非客户端以托管方式关闭连接(即执行FIN四向握手),否则服务器将不会检测到死客户端,除非它尝试与客户端通信并失败。