while(剩余大小>0)
{
      res = recv(mHttpSock,fbuf,1024,0);
      剩余大小 -= res;
if(res >= 0)
{
      f.Write(fbuf,res);
         }
}
偶尔res会出现为0的现象,一旦为0,之后每次接收recv到的数据都为0,除非重新下载。
请问这是怎样引起的呀?

解决方案 »

  1.   

    res=0 说明网络连接应该断开
    你的程序应该这样写:
    while(剩余大小>0)
    {
          res = recv(mHttpSock,fbuf,1024,0);
           if(res==SOCKET_ERROR||res<=0||res==WSAEWOUDLEBOCLK)
               break;
            else{
                   剩余大小 -= res;
                   f.Write(fbuf,res);
           }
      

  2.   

    res = recv(mHttpSock,fbuf,1024,0);
    res为0说明什么?
      

  3.   

    说明链接的对方已经把socket链接断开了,有可能是另一端超时时间设得太短了
      

  4.   

    rcv = recv(mHttpSock,fbuf,1024,0);
    if(rcv > 0)
    {

    }
    else
    {
    close(sock);
    return printf("Problem with recv()\n");
    }