s.bind(('0.0.0.0',6666))
s.listen(3)#设置关注列表
rlist =[s]#s用于等待处理连接
wlist=[]
xlist=[]#遍历返回值列表,处理就绪的iowhileTrue:# 监控io
rs, ws, xs = select(rlist, wlist, xlist)for r in rs:#增加新的io关注if r is s:
c,addr = r.accept()print(addr)
rlist.append(c)passelse:
data = r.recv(1024).decode()print(data)ifnot data:
rlist.remove(r)
r.close()continue
r.send(b'ok')#有客户端发消息for w in ws:passfor x in xs:pass
"""
select tcp服务
思路
1.将关注的IO放入到监控列表
2.当io就绪时通过select返回
3.遍历返回值列表,得知哪个io就绪进行处理
"""from socket import*from select import select
#创建监听套接字,作为关注的io
s = socket()
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
s.bind(('0.0.0.0',6666))
s.listen(3)#设置关注列表
rlist =[s]#s用于等待处理连接
wlist=[]
xlist=[]#遍历返回值列表,处理就绪的iowhileTrue:# 监控io
rs, ws, xs = select(rlist, wlist, xlist)for r in rs:#增加新的io关注if r is s:
c,addr = r.accept()print(addr)
rlist.append(c)passelse:
data = r.recv(1024).decode()print(data)ifnot data:
rlist.remove(r)
r.close()continue
wlist.append(r)#有客户端发消息for w in ws:
w.send(b'ok')
wlist.remove(w)for x in xs:pass