我用while循环接收客户端发来的文件,程序如下
while(bContinued && (TotalRevBytes < MAXREVBUFFER))
{
Revret = recv(sClient, pBuffer, MAXREVBUFFER-TotalRevBytes, 0);
if(0 == Revret)
{
bContinued = FALSE;
}
else if (SOCKET_ERROR == Revret)
{
printf("recv() call failed. %d\n", WSAGetLastError());
bContinued = FALSE;
}
else
{
pBuffer += Revret;
TotalRevBytes += Revret;
}
}
但是该程序只是在第一次循环的时候得到7个字节,在第二次循环中到“recv”的时候死掉,也就是没有任何响应,请问这是怎么回事?
while(bContinued && (TotalRevBytes < MAXREVBUFFER))
{
Revret = recv(sClient, pBuffer, MAXREVBUFFER-TotalRevBytes, 0);
if(0 == Revret)
{
bContinued = FALSE;
}
else if (SOCKET_ERROR == Revret)
{
printf("recv() call failed. %d\n", WSAGetLastError());
bContinued = FALSE;
}
else
{
pBuffer += Revret;
TotalRevBytes += Revret;
}
}
但是该程序只是在第一次循环的时候得到7个字节,在第二次循环中到“recv”的时候死掉,也就是没有任何响应,请问这是怎么回事?
TotalRevBytes=0; //加上这行while(bContinued && (TotalRevBytes < MAXREVBUFFER))
{
Revret = recv(sClient, pBuffer, MAXREVBUFFER-TotalRevBytes, 0);
if(0 == Revret)
{
bContinued = FALSE;
}
else if (SOCKET_ERROR == Revret)
{
printf("recv() call failed. %d\n", WSAGetLastError());
bContinued = FALSE;
}
else if(WSAEWOULDBLOCK==Revtet)
{
bContinued = FALSE; }
else
{
pBuffer += Revret;
TotalRevBytes += Revret;
}
}
我是在调试的时候,也就是一步一步进行跟踪的时候发现这个现象的