码迷,mamicode.com
首页 > 其他好文 > 详细

IO多路复用之select

时间:2020-02-27 14:37:26      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:locking   print   writable   sock   send   form   else   nbsp   bind   

 1 import socket,select,queue
 2 
 3 server = socket.socket()
 4 server.bind((127.0.0.1,9000))
 5 server.listen(1000)
 6 server.setblocking(0)
 7 
 8 inputs = [server]
 9 outputs = []
10 que_dic = {}
11 
12 
13 
14 while True:
15     readable, writable, E = select.select(inputs, outputs, inputs)
16     try:
17         for r in readable:
18             if r is server:
19                 conn,addr = r.accept()
20                 print(----{}----.format(addr))
21                 inputs.append(conn)
22                 que_conn = queue.Queue()
23                 que_dic[conn] = que_conn
24             else:
25                 data = r.recv(1024)
26                 print(收到>>>,data.decode(utf8))
27                 que_dic[r].put(data)
28                 outputs.append(r)
29         for w in writable:
30             data = que_dic[w].get()
31             w.sendall(data)
32             outputs.remove(w)
33     except Exception:
34         for e in E:
35             del que_dic[e]
36             if e in outputs:outputs.remove(e)
37             print(inputs)
38             inputs.remove(e)
39             print(inputs)

client 端

1 import socket,select,queue
2 
3 client =  socket.socket()
4 client.connect((127.0.0.1,8000))
5 while True:
6     msg = input(>>>:)
7     client.sendall(msg.encode(utf8))
8     data = client.recv(1024)
9     print(收到返回信息:,data.decode(utf8))

 

IO多路复用之select

标签:locking   print   writable   sock   send   form   else   nbsp   bind   

原文地址:https://www.cnblogs.com/fly10086/p/12372009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!