IO多路复用多并发服务器模板

2018-06-27 09:46:23来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

 

 

 1 import socket
 2 import selectors    # IO多路复用选择器
 3 
 4 epoll_selector = selectors.EpollSelector()  # 实例化选择器
 5 server = socket.socket()    # 实例化套接字
 6 server.bind(('', 6666)) # 地址和端口
 7 server.listen(100)  #侦听数
 8 
 9 def recv(conn): # 数据处理
10     recv_data = conn.recv(1024)
11     if recv_data:   # 判断是否存在
12         res = recv_data.decode()    # 解码接收到的数据
13         print(res)
14         conn.send(recv_data)    # 发送数据
15     else:
16         epoll_selector.unregister(conn) # 解除监视,关闭监控
17         conn.close()    # 关闭连接
18 
19 def accept(server): # 连接处理
20     conn, addr = server.accept() # 生成一个对等连接套接字
21 
22     epoll_selector.register(conn, selectors.EVENT_READ, recv)   # 注册毁掉函数
23 
24 
25 epoll_selector.register(server, selectors.EVENT_READ, accept) # 注册回调函数
26 
27 
28 while True:
29     events = epoll_selector.select()    # 查询事件
30 
31     for key, mask in events:    # 拆包
32         callback = key.data
33         sock = key.fileobj
34         callback(sock)

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:第二波分析:德国是2018世界杯夺冠最大热门? Python数据分析来

下一篇:算法学习笔记(五):快速排序和简单选择排序