我有一段定制的网络服务器代码。它是使用evnet 模块编写的。
当从远程客户端请求时,似乎缩短了消息的长度。但是当我在同一台机器上使用它时,它似乎传递了完整的信息。我无法弄清楚问题可能是什么或如何诊断它。我使用网络浏览器对其进行了测试,curl
并且nc
. 从远程客户端请求时,它从未传递完整长度的消息。
这是我的网络服务器的简化版本,它仍然存在问题。我正在使用 Python 2.7.1 在 Ubuntu 11.04 上执行此操作
我有一段定制的网络服务器代码。它是使用evnet 模块编写的。
当从远程客户端请求时,似乎缩短了消息的长度。但是当我在同一台机器上使用它时,它似乎传递了完整的信息。我无法弄清楚问题可能是什么或如何诊断它。我使用网络浏览器对其进行了测试,curl
并且nc
. 从远程客户端请求时,它从未传递完整长度的消息。
这是我的网络服务器的简化版本,它仍然存在问题。我正在使用 Python 2.7.1 在 Ubuntu 11.04 上执行此操作
您在调用send()
发送一堆数据后立即关闭套接字。如果还有数据还在缓冲,当你关闭套接字时它会被丢弃。
相反,您应该调用shutdown(SHUT_WR)
套接字来告诉远程端您已完成发送。这称为 TCP“半关闭”。作为响应,另一端将关闭其一侧,并且您将收到套接字不再可读的通知。然后,并且只有在那时,您才应该关闭套接字句柄。