来自封闭的阻塞套接字的python recv

时间:2016-02-15 15:48:59

标签: python sockets

我正在尝试编写基于tcp套接字的服务器。在我阅读的python文档中,关闭套接字上的recv应该引发错误。但是当客户端关闭套接字时,服务器仍然可以在此套接字上recv并获取空字符串。那么,我可以假设,如果recv在阻塞套接字上返回空字符串,那么此连接是否已关闭或已关闭?

2 个答案:

答案 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