标题:萌新学习笔记之select监听多路IO
只看楼主
zxq0103
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2023-3-10
结帖率:0
 问题点数:0 回复次数:0 
萌新学习笔记之select监听多路IO
程序代码:
import os,sys
from select import select
from socket import *
"""
通过select,监听套接字实例
"""
ADDR = ('0.0.0.0',8888)
s = socket()
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
s.bind(ADDR)
s.listen(3)
#设置监听列表
rlist = [s]
wlist = []
xlist = []
#开始监听
while True:
    rs,ws,xs = select(rlist,wlist,xlist)
    #遍历返回值列表,处理就绪的IO
    for r in rs:
        if r is s: # 连接套接字就绪
            c,addr = r.accept()
            print(addr)
            rlist.append(c) # 把收消息套接字加入到监听读列表
        else: # 客户端消息就绪
            data = r.recv(1024).decode()
            if not data:
                rlist.remove(r)
                r.close()
                continue
            print(data)
            # r.send(b'OK')
            wlist.append(r) # 把发消息套接字加入到监听读列表
            
    for w in ws:
        w.send(b'OK') # 通过监听wlist主动给客户端回复信息
        wlist.remove(w)
    for x in xs:
        pass


[此贴子已经被作者于2023-4-28 07:25编辑过]

搜索更多相关主题的帖子: 列表 select 监听 IO ADDR 
2023-04-28 07:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-512067-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050116 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved