【发布时间】:2020-05-07 21:56:56
【问题描述】:
在接下来的sn-p中,我接收数据,直到我完全接收到来自socket客户端的所有数据。我继续将数据存储在大小为 300 的 char 缓冲区中。
ssize_t b;
char buffer[300]
while((b = recv(socket_fd,buffer,sizeof(buffer))) > 0) {
// keep on receiving the data
}
但问题在于每次迭代时,缓冲区都会重新填充,旧值会丢失。如何将缓冲区值连接成一个,以便在循环结束时将消息作为一个完整的字符串?
【问题讨论】:
-
创建一个单独的数组并将每个批次复制到该数组的末尾。
-
@johnelemans 你能举个例子吗?
-
@FiddlingBits 你能举个 c 的例子吗?
-
你对数据做了什么?最终,您将不得不处理它,无论您的情况如何。你不能简单地永远保持接收和连接。您知道您可以接收的最大数据量吗?如果是这样,只需将缓冲区设置为该大小即可。如果不是,则取决于您使用的协议,以了解何时最好处理和丢弃与继续接收。
标签: c arrays memory-management char c-strings