立即學習:https://edu.csdn.net/course/play/24458/296237?utm_source=blogtoedu
鏈接循環,一個服務器服務多個客戶端,
?
思路1:服務器一個一個地去服務客服端,等服務完一個客戶端后,再去服務下一個客戶端。
弊端:不可以一次性去處理所有的客戶端請求,一個一個處理處理的速度非常之慢,實際中是使用多線程進行并發編程。并且最多只能監聽5個客戶端請求,靠phone.listen(5)語句實現
.....phone.listen(5)#加上鏈接循環,使得服務器一直處于運行的狀態,一個客戶端服務關閉后,就會繼續等待接收另一個客戶端的請求,如此往復
while True:res = phone.accept()conn,client_addr = reswhile True:#解決客戶端單方面關閉而服務器還在等待時會報ConnectionResetError錯誤的bugtry:data = conn.recv(1024)#1024表示接收的字節最大量是1024bytesprint('這是客戶端的請求數據',data)conn.send(data.upper())except ConnectionResetError:breakconn.close()phone close()
?
思路2:利用線程并發編程實現