【发布时间】:2010-06-19 07:58:46
【问题描述】:
我正在用c编写简单的服务器/客户端,服务器临时存储来自客户端的消息并在客户端请求时检索它。
问题是当客户端从服务器接收消息时,缓冲区的行为有点奇怪。 我所做的只是从服务器读取尽可能多的内容并将其打印在屏幕上,但不知何故,缓冲区被覆盖的次数超过了缓冲区的最大大小
在客户端
while((byteRead = recv(ssock, buffer, MAXBUF, 0)) > 0)
{
if(byteRead <= 0)
break;
printf("%s", buffer);
}
其中 MAXBUF 为 256。它包含一些垃圾,所以我检查了缓冲区中的字符串大小 和令人惊讶的
printf("%d READ vs %d buffer strlen \n", byteRead, strlen(buffer))
告诉我 byteRead 是 256,但缓冲区的字符串长度是 262。
有什么想法吗??
P.s 在服务器端,它正确读取文件并将其发送到套接字。
【问题讨论】: