Python套接字:如何检测客户端何时意外断开连接? (例如,WiFi断开连接)

时间:2019-04-14 21:45:20

标签: python linux sockets networking tcp

我正在编写一对客户端/服务器脚本,其中保持连接以及在客户端断开连接时快速检测非常重要。服务器通常只发送数据,因此要测试客户端是否已正常断开连接,我将套接字设置为超时模式并检查其返回的内容:

try: # check if client disconnect
    c.settimeout(1)
    if not (c.recv(1024)):
        print("## Socket disconnected! ##")
        c.settimeout(None)
        closeConnection(c)
        return
except Exception as e:
    print(e)
    c.settimeout(None)

如果我关闭客户端,这将立即生效。但是,如果我断开客户端计算机上的WiFi,服务器上的recv将不会返回任何内容。就像连接建立但没有任何发送一样,它只是超时。

我尝试使用send()向客户端发送空消息,作为轮询的一种方式。当我这样做时,无论客户端是否断开连接,该操作都会成功并返回0。

0 个答案:

没有答案