非阻塞I/O模型
-
主要是服务器的启动
-
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 客户端 多个客户端同时启动连接服务进行测试