服务端 from socket import * import time server = socket(AF_INET,SOCK_STREAM) server.bind((‘127.0.0.1‘,8081)) server.listen(3) server.setblocking(False) #accept变为非阻塞状态, print(‘server startting...‘) conn_l = [] #存放原始数据 del_l = [] #存放错误的数据 while True: #链接循环 try: print(‘=====>‘,conn_l) #链接地址 conn,addr = server.accept() #如果没有异常处理立马抛出错误 conn是链接,可以收发消息 # print(addr) conn_l.append(conn) except BlockingIOError: #收不到数据干这里的 time.sleep(4) #休眠两秒,继续 for conn in conn_l: #再次循环列表中的conn try: data = conn.recv(1024) conn.send(data.upper()) except BlockingIOError: pass except ConnectionResetError: del_l.append(conn) #错误的conn添加到del_l for obj in del_l: obj.close() #和conn.close 一样,只是换了个名字 conn_l.remove(obj) #将那个错误的obj直接从元列表删除 del_l = [] #清空列表 清空之后下次还可以接收,删除了就没地方存放他的值 continue #新建一个存放错误值的列表,然后 客户端 from socket import * client = socket(AF_INET,SOCK_STREAM) client.connect((‘127.0.0.1‘,8081)) while True: msg = input(‘p;ease:‘).strip() if not msg:continue client.send(msg.encode(‘utf-8‘)) data = client.recv(1024) print(data.decode(‘utf-8‘))
时间: 2024-10-12 13:17:14