【发布时间】:2013-03-09 17:25:49
【问题描述】:
我正在为我自己的协议使用 Python 编写的服务器,但我遇到了问题。
客户端连接服务端,sendall()的三条数据:包标识字节、字符串长度、UTF-8编码字符串。
在客户端,我没有收到任何错误,但在服务器端,这是:
error: [Errno 10054] An existing connection was forcibly closed by the remote host
发生。错误每次都发生在不同的行,有时在recv()ing 标识字节时,有时在读取字符串长度时,有时在读取字符串本身时,有时它工作得非常好,就像它应该做的那样。
这里发生了什么?服务器计算机有防火墙例外。客户端连接,连续发送三条数据,然后关闭套接字。我这样做是不是太快了?
谢谢。
【问题讨论】:
-
请发布(即复制、粘贴、格式化 SO)来自服务器和客户端代码的相关代码片段。最好是其他人可以运行以自行尝试的代码。此外,请描述任何attempts you have made to solve this problem 以及您认为它们不起作用的原因。
-
管理这个的代码分散在几个类中,@crazeewulf,试图以可重用的方式重建它将是一项巨大的努力。这个错误看起来像一个套接字级错误,我希望有人能用我提供的一般信息给我一个一般性的答案。如果这没有发生,我会制作样品。谢谢。
-
OP,在这种情况下,以this 代码为例,编写您自己的微型 TCP 服务器和客户端,并一遍又一遍地发送与您的大型应用程序相同的数据。看看能否重现问题。使用此测试代码和错误消息(如果有)报告结果。基本上,尝试将问题归结为一个小代码片段,SO 上的其他人可以使用它来调试此问题。
标签: python sockets networking protocols