socketserver這個模塊是利用IO多路復用以及多線程實現並發的,可以讓服務器同時建立多個鏈接
原理如圖
我們這樣更改服務器代碼
import socketserver '''需要先寫上一個類繼承它''' class MyServer(socketserver.BaseRequestHandler):#必須繼承這個類才能實現並發 def handle(self):#每個鏈接建立后都會自動執行該方法 conn = self.request#這個是每個客戶端的鏈接 conn.sendall(bytes('鏈接已建立', encoding='utf-8')) while True: ret_bytes = conn.recv(1024) ret_str = str(ret_bytes, encoding='utf-8') if ret_str == 'q': print(conn, '該鏈接終止') break conn.sendall(bytes(ret_str + ' 信息收到', encoding='utf-8')) if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',7777),MyServer) ''' 這一步操作內部幫我們創建了socket對象,只要有人鏈接了,會執行Myserver類的 handle方法 ''' server.serve_forever()#while循環,等待用戶過來鏈接
結果如圖,
兩個人同時鏈接沒有問題


