首页 > 其他 > 详细

IO多路复用之Selectors

时间:2020-02-27 14:42:14      阅读:70      评论:0      收藏:0      [点我收藏+]
 1 import selectors,socket
 2 
 3 sel = selectors.DefaultSelector()
 4 
 5 def accept(sock,mask):
 6     conn,addr = sock.accept()
 7     print(accepted:,conn,from,addr)
 8     conn.setblocking(0)
 9     sel.register(conn,selectors.EVENT_READ,read)
10 
11 def read(conn,mask):
12     data = conn.recv(1024)
13     if data:
14         print(data.decode(utf8))
15         conn.send(data)
16     else:
17         print(closing,conn)
18         sel.unregister(conn)
19         conn.close()
20 
21 sock = socket.socket()
22 sock.bind((127.0.0.1,8000))
23 sock.listen(100)
24 sock.setblocking(0)
25 sel.register(sock,selectors.EVENT_READ,accept)
26 
27 while True:
28     events = sel.select() #默认阻塞,已有数据就返回连接列表
29     for key,mask in events:
30         callback = key.data #accept
31         callback(key.fileobj,mask) #key.fileobj = socket

 

IO多路复用之Selectors

原文:https://www.cnblogs.com/fly10086/p/12371827.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!