"""IO多路复用select 实现多客户端通信1 将关注的IO放入对应的监控类别列表2 通过select函数进行监控3 遍历select返回值列表,确定就绪IO事件4 处理发生的IO事件"""from socket import *from select import selects = socket()s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)s.bind('0.0.0.0', 8888)s.listen(5)# 设置关注的IOrlist = [s]wlist = []xlist = []while True:# 监控IO的发生rs, ws, xs = select(rlist, wlist, xlist)# 遍历三个返回值列表,判断哪个IO发生for r in rs:# 如果套接字就绪则处理链接if r is s:c, addr = r.accept()print('Connect from', addr)# 加入新的关注IOrlist.append(c)else:data = r.recv(1024)if not data:rlist.remove(r)r.close()continueprint(data.decode())# r.send(b'OK')# 希望我们主动处理这个IOwlist.append(r)for w in ws:w.send(b'Ok,Thanks')wlist.remove(w)for x in xs:pass
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。