我正在尝试编写基于tcp套接字的服务器。在我阅读的python文档中,关闭套接字上的recv
应该引发错误。但是当客户端关闭套接字时,服务器仍然可以在此套接字上recv
并获取空字符串。那么,我可以假设,如果recv
在阻塞套接字上返回空字符串,那么此连接是否已关闭或已关闭?
答案 0 :(得分:0)
您必须按代码处理IOError异常。
except IOError as io_error:
if io_error.errno == <YOUR CODE>:
do something
请参阅:https://docs.python.org/2/library/errno.html#module-errno 获取代码
答案 1 :(得分:0)
您必须检查是否已从客户端收到数据。如果数据变量为空,则可以假设没有连接,因为客户端已关闭套接字或它们之间出现了错误。好的例子在https://docs.python.org/2/library/socket.html#example或者如果您使用的是python3:https://docs.python.org/3.5/library/socket.html#example