立即學習:https://edu.csdn.net/course/play/24458/296236?utm_source=blogtoedu
1.修復端口被占用的bug
import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#修復重復多次運行程序斷就被占用的bug,在綁定端口前設置
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)phone.bind(('127.0.0.1',8080))......
?
2.修復客戶端發送空字符串,服務器一直處于等待狀態的bug,判斷是否為空,是則跳過本次循環進入下次循環,不為空則執行
......msg = input("請輸入:")#修復客戶端發送空字符串而服務器卡在接收信息處的bug,continue表示跳出本次循環,重新開始下一次的循環if not msg:continuephone.send(msg.encode('utf-8'))res = phone.recv(1024)......
3.修復客戶端單方面關閉時,服務器會報錯的bug,這里指的是windows會報錯,Linux系統服務器會無限循環
......while True:#解決客戶端單方面關閉而服務器還在等待時會報ConnectionResetError錯誤的bug
#利用try....except....try:data = conn.recv(1024)#1024表示接收的字節最大量是1024bytesprint('這是客戶端的請求數據',data)#2)處理接收的請求后,發送數據send()#將客戶端發送來的小寫字母經過大寫處理后發送返回給客戶端conn.send(data.upper())except ConnectionResetError:break.......
Linux系統直接用if not data:break語句即可解決