2016-11-08 68 views
-1

我創建了一個UDP套接字並將數據發送到未偵聽的地址。下次嘗試接收數據時,它會失敗,並顯示錯誤[WinError 10054] An existing connection was forcibly closed by the remote host。舉個例子,這段代碼在最後一行會出錯。爲什麼以及如何修復它?嘗試從UDP套接字讀取時出錯

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.sendto(bytes("A", 'utf-8'), ("127.0.0.1", 5000)) 
s.recvfrom(128) 
+0

修復它?您是否考慮過發送到*正在*聽的地址?你造成了一個錯誤,你有錯誤。有什麼要解決的? – EJP

回答

1

我創建了一個UDP套接字和發送數據到一個地址是不聽

答案就在問題。只要確保有一個服務器端邏輯向您發回數據。 否則,操作系統會向您的應用程序發送一條ICMP消息,指出該端口上沒有任何內容正在偵聽,這將觸發您正在報告的[WinError 10054]。順便說一句,UDP本質上是一個無連接協議,錯誤信息不能準確。