关于socket的IO多路复用学习心得
python IO多路复用定义:建立某种机制,这种机制能监视文件描述符(阻塞,运行),当某描述符改变时程序执行某一操作,有时我们程序socket监听多个端口时可以使用
服务端代码:
import socket
import select
import time
s1=socket.socket()
s1.bind(('127.0.0.1',8001))
s1.listen(3)
s2=socket.socket()
s2.bind(('127.0.0.1',8002))
s2.listen(3)
s3=socket.socket()
s3.bind(('127.0.0.1',8003))
s3.listen(3)
while True:
a, b, c = select.select([s1, s2, s3], [], [], 3)
for data in a:
print("进入循环")
con,addr=data.accept()
if data is s1:
con.sendall(bytes('你好,8001',encoding='utf8'))
elif data is s2:
con.sendall(bytes('你好,8002', encoding='utf8'))
else:
con.sendall(bytes('你好,8003', encoding='utf8'))
客户端代码:
s1:
import socket
import time
client=socket.socket()
client.connect(('127.0.0.1',8001))
print("srr")
while True:
resulr=client.recv(1024)
print(str(resulr,encoding='utf8'))
s2:
import socket
import time
client=socket.socket()
client.connect(('127.0.0.1',8002))
print("srr")
while True:
resulr=client.recv(1024)
print(str(resulr,encoding='utf8'))
s3:
import socket
import time
client=socket.socket()
client.connect(('127.0.0.1',8003))
print("srr")
while True:
resulr=client.recv(1024)
print(str(resulr,encoding='utf8'))
运行结果:




浙公网安备 33010602011771号