- 论坛徽章:
- 0
|
有一简单的程序,python做服务端,逻辑很简单,监听接收客户端数据并返回相关数据。
大概的逻辑代码如下:
comms_socket = socket.socket()
comms_socket.bind((host,port))
comms_socket.listen(2)
while True:
connection,address = comms_socket.accept()
connected=True
while connected:
rx_buf = connection.recv(1024)
rx_len = len(rx_buf)
if rx_len == 0:
connection.close()
print("Err:client is offline!")
connected=False
else :
dosome()
客户端代码就是普通的connect, 发送,接收,用法。开机自动运行该客户端软件。
这服务端,客户端均能正常运行,但就是在客户端不正常关闭(直接关机客户端电脑,重启该电脑)的操作后,会让服务端报告"reset by peer"的错误,
而且报告的代码是在connection.recv(1024)这行代码中,我大致明白应该是如下的原因造成这个现象的:
双方之前已经正常建立了TCP通信通道,也可能进行过了交互,当某一方在交互的过程中发生了异常,如崩溃等,异常的一方会向对端发送reset报文,通知对方将连接关闭。客户端直接重启电脑,服务端没有处理该连接,请问各位,这个服务端的Python代码需做怎样的改进去处理这种客户端异常退出连接的情况?谢谢!
|
|