我用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”的时候死掉,也就是没有任何响应,请问这是怎么回事?

解决方案 »

  1.   

    刚又调试了一下好像又返回10035错误,是不是这个recv必须要立即执行,还不能调试了???
      

  2.   


    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;
    }
    }
      

  3.   

    你是阻塞socket吧!recv挂在那里也是可能的!那说明没有数据发过来
      

  4.   

    是在一个线程中accept的,算是非阻塞的。
    我是在调试的时候,也就是一步一步进行跟踪的时候发现这个现象的