Python从tcp socket接收数据

问题描述 投票:0回答:1

说我们有:

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

python python-3.x python-3.7
1个回答
0
投票
It is not 1024

可能意味着很多东西,它可能意味着:

  • 它小于1024字节:这次你会收到部分数据,如果有其他事情需要接收,那么当你做另一个recv(..)时
  • 它大于1024字节:你将收到1024字节的数据,其余的是缓冲等待另一个触发器recv(..)
  • 没有接收数据:recv(..)将等待recv数据,可以通过设置超时来更改
© www.soinside.com 2019 - 2024. All rights reserved.