我的代码看起来像这样:
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
知道它接收了多少字节。