io多路并发与网络模型

s.bind(('0.0.0.0',6666))
s.listen(3)
#设置关注列表
rlist =[s] #s用于等待处理连接
wlist=[]
xlist=[]



#遍历返回值列表,处理就绪的io
while True:
    # 监控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)
            pass
        else:
            data = r.recv(1024).decode()
            print(data)
            if not data:
                rlist.remove(r)
                r.close()
                continue
            r.send(b'ok')

    #有客户端发消息




    for w in ws:
        pass

    for 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=[]



#遍历返回值列表,处理就绪的io
while True:
    # 监控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)
            pass
        else:
            data = r.recv(1024).decode()
            print(data)
            if not 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

猜你喜欢

转载自blog.csdn.net/qq_42307546/article/details/132840995
今日推荐