关于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'))

运行结果:

 

 

 

 

    

posted @ 2019-02-09 16:39  doctor_jin  阅读(734)  评论(0)    收藏  举报