IO多路復用多並發服務器模板
阿新 • • 發佈:2018-06-26
套接字 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.data33 sock = key.fileobj 34 callback(sock)
IO多路復用多並發服務器模板