我正在尝试从服务器读取消息(字符串/文本),并且我将缓冲区大小设置为非常大(buffer_size = 1000),因此我只需要从服务器读取一次。
所以我的问题是,如果消息恰好是10个字节,并且我调用read(socket,buffer,buffer_size),那么它会只读取10个字节,因为它小于实际的缓冲区大小吗?我想我只是对电话的行为感到好奇,以防万一读取的内容实际上不如预期的那么多。
另外,如果我再次调用read(),它将覆盖缓冲区中的内容吗?我的意思是清空缓冲区并用新输入覆盖它。
您大概使用的是TCP,它是一种流协议-不会发送消息边界,而只是发送字节流。因此,即使服务器执行一次写入操作,您也可能最终不得不进行多次读取才能获取数据。
继续读取,直到有足够的字节,或者读取返回0(表示EOF)为止。
如果读取使您获得了N个字节,而这还不够,那么您需要发出另一个读取目标缓冲区+N。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句