if ((select(sockfd + 1), &readfd, NULL, NULL, &stime) > 0)
{
#if 1
nlen = recv(sockfd, pcBuffer, 199, 0);
printf("recv num(%d), buffer num(%d).\n", nlen, lRecvnum);
if ((lRecvnum + nlen) < 199)
{
lRecvnum += nlen;
pcBuffer += nlen;
printf("recv num(%d), buffer num(%d), buffer(%s).\n", nlen, lRecvnum, buf);
}
#else
while ((nlen = recv(sockfd, pcBuffer, 199, 0)) > 0)
{
printf("recv num(%d), buffer num(%d).\n", nlen, lRecvnum);
if ((lRecvnum + nlen) < 199)
{
Recvnum += nlen;
pcBuffer += nlen;
printf("recv num(%d), buffer num(%d), buffer(%s).\n", nlen, lRecvnum, buf);
}
}
#endif
}
现在想问的是执行上面一段代码,就是#if 1,recv返回的值是正常的,返回值是199跟写到pcBuffer的数据是一样的,但是如果把#if 1改成#if 0,执行下面在
while ((nlen = recv(sockfd, pcBuffer, 199, 0)) > 0)的代码分支的时候,recv的返回值一直是1,但是写到pcBuffer的数据却是正确的,这个是为什么?recv的返回值是1,但是写到pcBuffer中的个数却不是1,而是正确的个数,为什么这个时候的recv不返回不跟#if 1的时候是一样的,也是199?