python - Python 从 tcp 套接字接收数据
问题描述
假设我们有:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
data = s.recv(1024)
如果我们收到消息,但最后一条消息不是 1024 字节怎么办。我们还会收到它还是会永远等待?如果没有填满缓冲区,如何接收最后一条消息?
在 Node.js 中,流具有“刷新”行为,其中刷新在内部调用(不确定何时),如下所示:https ://github.com/ORESoftware/json-parser/blob/master/src/index.ts
解决方案
It is not 1024
可能意味着很多事情,它可能意味着:
- 它小于 1024 字节:这次无论如何你都会收到部分数据,如果还有其他东西要接收,当你再做一次 recv(..)
- 它大于 1024 字节:您将收到 1024 字节的数据,其余的被缓冲等待另一个触发到 recv(..)
- 没有接收数据:recv(..)会一直等到有recv数据,可以通过设置超时来改变