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循環,等待用戶過來鏈接
結果如圖,

兩個人同時鏈接沒有問題
