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

 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)

猜你喜欢

转载自www.cnblogs.com/mxwei/p/9226508.html