欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-17 09:41:01
1 import socket 2 import selectors # IO多路复用选择器 3 4 epoll_selector = selectors.EpollSelector() # 实例化选择器 5 server = socket.socket() # 实例化套接字 6 server.bi... ......

 

 

 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)