python的TCP通信中,客户端突然掉线,如何在服务器端检测出来?

原本代码如下:代码如何修改,才能检测客户端已经掉线?

def CreateThread():
    Thread001Thread = threading.Thread(target=Thread001)
    Thread001Thread.start()

def Thread001():
    Thread001Listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Thread001Listener.bind(Parameter_Device.ServerListenSerial[0])
    Thread001Listener.listen(128)

    while True:
        Temp_Information, Temp_SourceAddress = Thread001Listener.accept()
        while True:
            Temp_ReceiveData = Temp_Information.recv(1024)
            if Temp_ReceiveData:
                print(Temp_ReceiveData.decode('utf-8'))
            else:
                break

每次客户端网络突然断开后,重新尝试通信,但是服务器端已经无法再接收信息了,该如何解决该问题呢?

服务器端定时给客户端发送一个测试信息,如果发送失败就断线了

客户端掉线,服务端会抛一个异常,你应该使用try,except来捕获异常,否则服务端线程直接崩了
服务端抛了异常,就释放掉socket对象,正常你的服务端应该可以支持多个客户端同时连接的才对,你应该新建线程来执行recv,而不是在accept的线程里执行recv,accept要侦听其他连接呢。或者你完全改用异步侦听和异步接收的方法,而不是死循环同步接收
客户端掉线,客户端也会抛一个异常,如果客户端发送接收抛异常,就断开当前连接,重新建立连接
另:如果客户端主动断开连接,服务端不会抛异常,而是会受到一个长度为0的包,你应该判断一下受到的字节数,如果是0就断开连接,不要继续死循环占用资源