標籤:cti 迴圈 問題 ace soc style abort mod print
socket服務端在接收socket用戶端時拋出異常
ConnectionAbortedError: [WinError 10053] 您的主機中的軟體中止了一個已建立的串連。
socket服務端代碼
#-*- coding:utf-8 -*-# Author: Jiang Zu Xingimport socket,timesocketserver=socket.socket()host="0.0.0.0"port=9999socketserver.bind((host,port))socketserver.listen(5)while True: client,addr=socketserver.accept() print("串連來自:",addr) msg="顯示伺服器返回資料" while True: print("準備接收資料") data = client.recv(1024) print("接收資料完畢") if data ==0: print("no data") break else: print(data.decode(‘utf-8‘)) client.send(msg.encode()) client.close()socketserver.close()
socket用戶端代碼
#-*- coding:utf-8 -*-# Author: Jiang Zu Xingimport socket,timesocket_client=socket.socket()host="192.168.1.35"port=9999data="222"socket_client.connect((host,port))print("開始發送")socket_client.send(data.encode())print("開始接收")msg=socket_client.recv(1024)print("接收結束")print(msg.decode(‘utf-8‘))time.sleep(100)
異常
Traceback (most recent call last): File "C:/Users/Administrator/Desktop/jiang/python/demo/網路編程/socket_server.py", line 15, in <module> data = client.recv(1024)ConnectionAbortedError: [WinError 10053] 您的主機中的軟體中止了一個已建立的串連。
出現問題:
剛剛學習socket寫的練手指令碼
伺服器端Receive資料時,關閉了用戶端就會強制關閉串連,就會出現上面的錯誤提示。
建議:
在接收完資料後退出死迴圈,不要讓recv()函數阻塞住,關閉用戶端(檔案發送端)前建議發送一個訊息告訴伺服器端(檔案接收方)“我要中斷連線了”,然後兩方都關閉串連close
ConnectionAbortedError: [WinError 10053] 您的主機中的軟體中止了一個已建立的串連