【发布时间】:2013-05-14 19:15:42
【问题描述】:
我已通读此 Python 套接字简介: http://docs.python.org/3.3/howto/sockets.html
这是我的服务器
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(最近一次调用最后一次):文件“”,第 1 行,in s.connect(("localhost",8000)) OSError: [WinError 10056] 连接尝试针对已连接的套接字。
我该如何解决这个错误?服务器稍作调整,但客户端是教程中的确切代码。而且这个错误看起来很奇怪,毕竟我希望套接字已经与服务器连接。起初我以为已经有套接字连接到我的服务器,但重新启动它并再次输入客户端代码会导致相同的结果。
【问题讨论】:
-
我发现一行重复,可能这个重复的行是你的问题:serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
-
感谢您的帮助。可悲的是问题仍然存在
-
操作系统以不想关闭套接字而闻名,直到他们确定使用它们的任何事情都已真正完成。将代码放入其中将确保它们在两侧正确关闭。即使应用程序崩溃。