服務端發送歡迎訊息後 conn.recv(1024) 阻塞等待客戶端回覆。若客戶端未調用 recv 直接關閉連接,服務端的 recv 會拋出 socket.error: [Errno 10053] Software caused connection abort(Windows 下連接被軟體中止)。
recv 返回 0(正常關閉)或拋異常(異常中斷),視具體時序而定。recv 並直接退出,導致服務端阻塞在 recv 時連接被重置。# 服務端
try:
msg = conn.recv(1024)
if not msg: # 對端正常關閉
print("Client closed")
else:
print("Received:", msg.decode())
except ConnectionResetError:
print("Connection reset by peer")
except Exception as e:
print("Error:", e)
finally:
conn.close()
try-except 捕獲異常。socket.settimeout 避免永久阻塞。網絡編程中「對端意外斷開」是常態,必須防御性編程。