如何检测Socket /连接在Python 3.6中突然关闭

时间:2019-05-05 13:35:21

标签: python sockets python-3.6

如何在Python 3.6中检查客户端是否突然断开连接。这是我的代码,

componentDidUpdate()

如果客户端正常断开连接,则此方法有效,它正在正确关闭连接。如何检查客户端是否突然断开连接?

1 个答案:

答案 0 :(得分:0)

您可以在开始时尝试向客户端发送数据包,并使用它查看是否已连接到客户端

while True:
    try:
        string = "Are you up?"
        s.send(string.encode())
    except:
        print("Can't seem to be connected with the client")
        # here you can process the expection
    # rest of the code

在您的情况下,您已经在使用非阻塞套接字conn.setblocking(0),因此,即使客户端结束了会话并且您没有收到任何数据temp,变量也将不包含任何内容,因此您会从循环中中断(如果客户端在循环中发送数据,则表示客户端是

或者您也可以设置超时以响应客户端的响应

s.settimeout(30) # wait for the response of the client 30 seconds max

在recv行中,您可以执行以下操作:

try:
    temp = conn.recv(1024)
except socket.timeout:
    print('Client is not sending anything')