c语言 - 字节数 recv()'d 大于缓冲区中存储的数据量?



我的代码看起来像这样:

char buffer[BUFSIZE];
while (1) {
memset(buffer, 0, BUFSIZE);
ssize_t received = recv(csock, buffer, BUFSIZE, 0);
printf("Received %lu blen %lun", received, strlen(buffer));
...
}

有时,我的printf语句的输出是:

Received 1045 buffer GETFILE OK 233174
���� blen 25

这怎么可能?如果recv((将它获得的所有数据存储在缓冲区中,那么strlen(buffer)不应该是接收到的字节数吗?

strlen统计字节数,直到其中一个字节为0。

它不会告诉你收到了多少字节。但事实并非如此。

只有recv知道它接收了多少字节。

最新更新