码迷,mamicode.com
首页 > 其他好文 > 详细

基于select的IO多路复用并发模型

时间:2020-07-17 22:21:54      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:对象   input   服务   host   war   arm   客户   class   socket   

服务端:

from  socket import *
from select import *

HOST=0.0.0.0
PORT=8585
ADDR=(HOST,PORT)


tcp_socket=socket()
tcp_socket.bind(ADDR)
tcp_socket.listen(5)
print(tcp_socket)
#监听读IO列表
rlist=[tcp_socket]
#监听写IO列表
wlist=[]
#监听异常IO列表 ps:linux中这个列表不用 因为linux不会主动处理异常
xlist=[]


while True:
    #监听IO
    #rs,ws,xs分别为读、写、异常事件IO的返回列表
    rs, ws, xs = select(rlist,wlist,xlist)
    for r in rs:
        #当rs列表中r与tcp_socket为同一对象时
        if r is tcp_socket:
            connfd,addr=rs[0].accept()
            print(connect from,addr)
            rlist.append(connfd)
        else:
            data=r.recv(1024)
            if not data:
                print(退出,r)
                r.close()
                rlist.remove(r)
                continue
            else:
                print(data.decode())
                wlist.append(r)
    for w in ws:
        w.send(bok)

 

 

客户端:

"""
/etc/python3
@File     : tcp_conecter.py
@Time     : 2020/7/17 下午2:43
@Author   : wangyongqi
@Email    : 92644827@qq.com
@SOftware : PyCharm 
"""
from socket import socket



sockfd=socket()
sockfd.connect((0.0.0.0,9548))
while True:
    sockfd.send(input(">>").encode())

 

基于select的IO多路复用并发模型

标签:对象   input   服务   host   war   arm   客户   class   socket   

原文地址:https://www.cnblogs.com/yongqi-wang/p/13332585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!