我讀過throught此介紹給蟒蛇插座: http://docs.python.org/3.3/howto/sockets.html蟒蛇插座:winerror 10056
這是我的服務器
import socket
serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversocket.bind(("localhost",8000))
serversocket.listen(5)
while True:
(client,addr)=serversocket.accept()
data=serversocket.recv(1024)
print(data.decode("utf-8"))
,這是客戶端
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost",8000))
的想法是服務器只是打印從客戶端發送的所有數據。正如你所看到的,我打算用utf-8將消息字符串編碼爲字節。但我從來沒有走過那麼遠。
隨着服務器腳本的運行,我將客戶端線路逐個輸入到IDLE python shell中。第三行後,此錯誤提示。由於我是德國人,這是一個模糊的翻譯。如果您可以重現錯誤,錯誤消息可能聽起來不同
Traceback (most recent call last): File "", line 1, in s.connect(("localhost",8000)) OSError: [WinError 10056] A connection attempt targeted an already connected socket.
如何解決此錯誤?服務器稍有改動,但客戶端是教程中的確切代碼。並且錯誤seens相當奇怪,畢竟我希望套接字已經連接 - 與服務器。起初我以爲不知何故已經有連接到我的服務器的套接字,但重新啓動它,再次輸入客戶端代碼導致相同的結果。
我發現重複的線路,可以在此重複行是你的問題:ServerSocket的= socket.socket(socket.AF_INET,socket.SOCK_STREAM) – pylover
感謝您的幫助。可悲的是,問題仍然存在 – lhk
操作系統被稱爲不想關閉套接字,直到他們確信無論使用它們是否真的完成。把代碼放在那裏可以確保它們在雙方都能正常關閉。即使應用程序崩潰。 – cmd