gpt4 book ai didi

c - 使用 recv 通过网络接收字符串

转载 作者:可可西里 更新时间:2023-11-01 02:48:35 25 4
gpt4 key购买 nike

我正在通过 TCP 一个接一个地发送一组字符串,使用:send(sockfd, msg, strlen(msg), 0) 并在服务器端使用:

while ((len=recv(fd, buf, MAXLEN, 0)) > 0) {
buf[len]='\0';
printf("%s\n", buf);
}

服务器打印字符串的次数是随机的。有时 2 次,有时 4 次等等。这是否与字符串的空终止有关?怎么了?

最佳答案

没有错。 TCP 是一种流传送服务。这是预期的行为。

空终止无关。即使它是通过 TCP 发送的,它的处理方式也与其他字符相同。这只是普通数据。

您可能需要多次调用 recv 来接收由单个 send 发送的数据,反之亦然。

调用recv 接收数据的次数与调用send 的次数没有任何关系。 send 将字节写入流。 recv 从流的开头读取字节。

recv 从操作系统提供的缓冲区空间中读取字节。类似于从文件中读取,但是当传入字节到达时,它们会附加到文件中。您不知道将传送多少字节。当没有更多数据可读时,recv 阻塞(除非你使用非阻塞套接字)。

关于c - 使用 recv 通过网络接收字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com