1. 程式人生 > >IO多路復用多並發服務器模板

IO多路復用多並發服務器模板

套接字 soc select() socket reg 並發服務 實例 cep mas

 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)

IO多路復用多並發服務器模板