sk.setblocking(False)
設置這個,當服務器沒有鏈接或者接收不到消息時報BlockingIOError
錯誤服務器
#server端 import socket sk = socket.socket() sk.bind(('127.0.0.1', 8080)) sk.listen() sk.setblocking(False) #設置服務器的accept, recv均爲非阻塞 conn_l = [] #鏈接上的conn都會加入這個列表中 del_l = [] #斷開的conn都會加入到這個列表中 while 1: try: conn, addr = sk.accept() conn_l.append(conn) except BlockingIOError: try: for conn in conn_l: ret = conn.recv(1024) if ret == b'': del_l.append(conn) continue else: print(ret) except BlockingIOError: pass for conn in del_l: conn.close() conn_l.remove(conn) del_l.clear() —————————————————————————————————— #client 客戶端 多個客戶端同時啓動鏈接服務進行測試