IO多路复用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO多路复用相关的知识,希望对你有一定的参考价值。
IO多路复用
selcet
import socket
import select
r,w,e=select.select(inputs,[],[],0.05) #IO多路复用
服务端
IO多路复用,同时监听多个socket对象
import socket import select sk=socket.socket() sk.bind(("127.0.0.1",8001)) sk.listen(5) sk1=socket.socket() sk1.bind(("127.0.0.1",8002)) sk1.listen(5) inputs=[sk,sk1,] while True: #IO多路复用,同时监听多个socket对象 # select 内部进行循环操作 # poll 内部进行循环操作 # epoll r,w,e=select.select(inputs,[],[],0.05) #IO多路复用 # 监听inputs ,访问sk,r=[sk],访问sk1,r=[sk1], for obj in r: if obj in [sk,sk1]: print("新连接进来了。。。",inputs) conn,addr=obj.accept() inputs.append(conn) else: print("有用户发数据了。。。",obj) data=obj.recv(1024) obj.sendall(data)
客户端
import socket sk=socket.socket() sk.connect(("127.0.0.1",8001)) while True: v=input(">>") sk.send(bytes(v,encoding="utf-8")) c=sk.recv(1024) print(c)
import socket sk=socket.socket() sk.connect(("127.0.0.1",8002)) while True: v=input(">>") sk.send(bytes(v,encoding="utf-8")) c=sk.recv(1024) print(c)
以上是关于IO多路复用的主要内容,如果未能解决你的问题,请参考以下文章