最近在使用python建立socket多线程通讯,对于判断对端是否在线,没有active这个属性。
查询网上的资料,data = socket.send(msg),if not data:或者if (len(data) == 0):,当客户端异常断开的时候,还是会导致server端异常退出。
加入try excep ConnectionResetError 后问题解决。记录如下
import socket
from threading import Thread
import socketserver
g_socket = None
g_conn_pool = []
g_addr_list = []
bind = False
def handle_client():
while True:
client, addr = g_socket.accept()
print(addr, '上线了')
g_conn_pool.append(client)
g_addr_list.append(addr)
def start_listen():
global g_socket, g_conn_pool
g_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
g_socket.bind(('127.0.0.1', 11111))
g_socket.listen(5)
print("服务端已启动,等待客户端连接...")
bind = True
t = Thread(target=handle_client)
t.setDaemon(True)
t.