基本上,我已经在几个地方阅读过,socket.recv()
将返回它可以读取的内容,或者是一个空字符串,表示另一端已关闭(官方文档甚至没有提到关闭连接后返回的内容...大!)。对于阻塞套接字来说,这一切都很好,很花哨,因为我们知道recv()
只有在实际有东西要接收时才返回,所以当它返回一个空字符串时,必须表示另一端已关闭连接,对吗?
好的,很好,但是当我的套接字未阻塞时会发生什么?我进行了一些搜索(可能还不够,谁知道?),并且不知道如何知道何时使用非阻塞套接字关闭了另一端。似乎没有任何方法或属性可以告诉我们这一点,将的返回值recv()
与空字符串进行比较似乎绝对没有用……只是我有这个问题吗?
举个简单的例子,假设我的套接字的超时设置为1.2342342(无论您在这里喜欢什么非负数)秒,然后我都打电话给socket.recv(1024)
,但是另一端在那段1.2342342的时间内没有发送任何东西。该recv()
呼叫将返回一个空字符串,并且我不知道该连接是否仍处于站立状态...
qq_遁去的一_1
相关分类