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

 

 

 




以上是关于IO多路复用的主要内容,如果未能解决你的问题,请参考以下文章

你管这破玩意叫 IO 多路复用?

多路转接(IO复用)接口介绍

多路复用io接口-epoll

IO多路复用 -- selectpollepoll实现TCP反射程序

IO多路复用

经典5种IO模型 | IO多路复用