C / C ++中的Read()-关于读取内容与缓冲区大小

生锈的工程师

我正在尝试从服务器读取消息(字符串/文本),并且我将缓冲区大小设置为非常大(buffer_size = 1000),因此我只需要从服务器读取一次。

所以我的问题是,如果消息恰好是10个字节,并且我调用read(socket,buffer,buffer_size),那么它会只读取10个字节,因为它小于实际的缓冲区大小吗?我想我只是对电话的行为感到好奇,以防万一读取的内容实际上不如预期的那么多。

另外,如果我再次调用read(),它将覆盖缓冲区中的内容吗?我的意思是清空缓冲区并用新输入覆盖它。

艾伦·斯托克斯

您大概使用的是TCP,它是一种流协议-不会发送消息边界,而只是发送字节流。因此,即使服务器执行一次写入操作,您也可能最终不得不进行多次读取才能获取数据。

继续读取,直到有足够的字节,或者读取返回0(表示EOF)为止。

如果读取使您获得了N个字节,而这还不够,那么您需要发出另一个读取目标缓冲区+N。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中如何读取超出缓冲区末尾的内容?

来自分类Dev

C ++中的缓冲区大小

来自分类Dev

您将如何限制缓冲区大小并返回c ++中的缓冲区限制?

来自分类Dev

在C中为未知(大小)结构创建缓冲区

来自分类Dev

C ++中getline的缓冲区大小限制

来自分类Dev

C ++读取缓冲区中的整个文件

来自分类Dev

读取C中缓冲区的特定部分

来自分类Dev

C recv()未在缓冲区中读取

来自分类Dev

读取c中的输入后如何清除缓冲区?

来自分类Dev

具有固定大小缓冲区的C中的read()函数无法返回预期结果

来自分类Dev

了解C中const缓冲区和read()的用法

来自分类Dev

C-函数read(文件,缓冲区,要读取的字节)破坏字符串

来自分类Dev

C#.NET套接字tcp begin / endreceive客户端:endreceive读取所有字节,但是在beginreceive中,缓冲区大小自行更改

来自分类Dev

C ++中的位缓冲区

来自分类Dev

在C ++中解析协议缓冲区

来自分类Dev

C中的缓冲区溢出与获取

来自分类Dev

在C#中同步缓冲区

来自分类Dev

C中自发的缓冲区溢出

来自分类Dev

C从读取系统调用中在缓冲区中查找换行符

来自分类Dev

在C中获取char缓冲区(从读取的文件)中的值数

来自分类Dev

需要在没有预定义缓冲区大小的C ++中构建字符串

来自分类Dev

标准C库中缓冲区大小的特殊宏是什么?

来自分类Dev

C ++-从具有相同功能的文件或内存缓冲区中读取

来自分类Dev

C ++ TCP Recv未知缓冲区大小

来自分类Dev

确定文件大小以在c中分配缓冲区

来自分类Dev

读取控制台缓冲区/输出C ++

来自分类Dev

读取控制台缓冲区/输出C ++

来自分类Dev

C读取文件和打印缓冲区

来自分类Dev

c + +和DX11中的动态常量缓冲区或动态顶点缓冲区

Related 相关文章

热门标签

归档