Python从TCP套接字接收数据

时间:2019-03-10 09:12:25

标签: python python-3.x python-3.7

说我们有

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
data = s.recv(1024)

如果我们收到消息,但最后一条消息不是1024字节,该怎么办。我们会仍然收到还是永远等待?如果没有填充缓冲区或没有填充缓冲区,如何接收最后一条消息?

在Node.js中,流具有“刷新”行为,其中内部调用了flush(不确定何时),看起来像这样:https://github.com/ORESoftware/json-parser/blob/master/src/index.ts

1 个答案:

答案 0 :(得分:0)

It is not 1024

可能意味着很多事情,可能意味着:

  • 它小于1024字节:无论如何这次您将接收部分数据,如果还有其他事情要接收,它将在您执行另一个recv(..)
  • 时出现
  • 它大于1024个字节:您将收到1024个字节的数据,其余的数据将被缓冲,以等待另一个触发recv(..)的数据
  • 没有接收数据:recv(..)将等待直到有一个recv数据,可以通过设置超时来更改