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)
View Code

客户端

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)
View Code
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)
View Code
 
原文地址:https://www.cnblogs.com/arthas-zht/p/6720569.html