当我`sock.recv(..)`的字节数超过发送给我的字节数时会发生什么?

阿维夫·科恩(Aviv Cohn)

假设我已使用连接到服务器socket我打电话了sock.recv(1000),但是服务器只给我发送了500个字节。

在我的实验中,sock.recv收到500个字节后返回。

但是,情况总是如此吗?

或者sock.recv,如果传递给它的参数大于它将收到的字节数,是否有可能继续等待呢?

巴尔玛

文档中

一次可接收的最大数据量由指定bufsize

这是允许的最大值,不是等待的数量。

有一个可选flags参数,其含义与Unixrecv(2)系统调用的含义相同值之一是:

MSG_WAITALL(从Linux 2.2开始)
此标志请求操作块,直到满足完整请求为止。但是,如果捕获到信号,发生错误或断开连接,或者下一个要接收的数据与返回的数据类型不同,则呼叫返回的数据仍可能比请求的少。该标志对数据报套接字无效。

因此,如果使用此选项,除非先关闭连接,否则它将一直等到接收到1000个字节。

如果没有该选项,它将等待,直到有任何可用的内容,然后将其返回,直到bufsize指定的数量为止

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Python 3中,当我索引一个字节数组时会发生什么?

recv()未收到预期的字节数

如果我们在内存地址末尾请求多字节数据会发生什么?

socket.recv() 接收的字节数少于预期

如果我在while循环中连续创建一个具有不同大小的字节数组并向其中添加读取流会发生什么?

当我分配大于字节的值时会发生什么?

我可以使用SerialPort.Write发送字节数组

为什么我的字节数组没有不同,即使 print() 说它们是不同的?

为什么我的测试会改变字节数组的长度?

为什么在编组后,我得到的字节数不同,但编组后却得到相同的结果?

我们如何知道字节数组上有什么样的结构

为什么我在文件中又报告了一个字节数?

我的io.Writer故意不写它传递的所有字节时,应该返回什么“写入的字节数”

将字节数组复制到 C 中的联合/结构中:是什么让我的对齐方式偏离了?

我怎么知道我的字节数组是否包含空白.tif文件

为什么在接受工作时 recv() 给我 errno 88?

我想将字符存储在字节数组中,然后将此字节数组写入文件,然后读回文件并输出到屏幕

我如何编码的补充Unicode字符从Java中的字节数组?

我可以采用字节数组并将其反序列化为结构吗?

我们可以将字节数组转换为Java中的InputStream吗?

我如何有效地填充字节数组

我可以通过WCF上传图像而不转换为字节数组吗?

我如何从D中的字节数组构造字符串

recv函数总是给我相同的缓冲区

Recv() 跳过字节

当我在sqlite中存储一个索引大于100,000的字节数组时,从表中选择它只能得到20的索引

为什么在我下载数组并尝试获取其长度时为什么会这样,它只会吐出数组的字节数

我应该在代码中添加些什么,以避免使用pyspark出现“超出最大允许字节数”错误?

如何将我的json字符串进行avro二进制编码为字节数组?