小编El *_*dor的帖子

如果在超时之前没有收到数据,Python的socket.recv()会返回非阻塞套接字是什么?

基本上,我已经阅读了几个socket.recv()会返回它可以读取的内容,或者一个空字符串表示另一方已关闭(官方文档甚至没有提到它在连接关闭时返回的内容...大!).这对于阻塞套接字来说都很好用,因为我们知道recv()只有当实际有东西要接收时才返回,所以当它返回一个空字符串时,它必须意味着另一方已经关闭了连接,对吧?

好的,很好,但是当我的套接字没有阻塞时会发生什么?我搜索了一下(也许还不够,谁知道?)并且无法弄清楚如何判断对方是否使用非阻塞套接字关闭了连接.似乎没有方法或属性告诉我们这一点,并且将recv()空字符串的返回值进行比较似乎绝对无用......这只是我有这个问题吗?

举一个简单的例子,假设我的套接字超时设置为1.2342342(你喜欢这里的非负数)秒和我打电话socket.recv(1024),但另一方在1.2342342秒期间没有发送任何内容.该recv()调用将返回一个空字符串,我不知道连接是否仍然存在...

python sockets nonblocking recv

50
推荐指数
3
解决办法
12万
查看次数

标签 统计

nonblocking ×1

python ×1

recv ×1

sockets ×1