我用的堵塞模式在个循环中传数据,设置了超时时间为10秒(怕程序堵死),可是现在有时send,recv会返回10060超时,苦恼了,感觉2边把我夹死了,不设置超时程序可能堵死,设置了超时出错.怎么办啊各位??????(我就想用堵塞模式)

解决方案 »

  1.   

    我把超时从6秒变到10秒还是会出现超时,堵塞模式下的send,recv超时到底什么意义????
      

  2.   

    堵塞模式下,recv和send必须有数据处于“待决”状态才会返回。
    什么地方超时,你贴出来看看。
      

  3.   

    do {
    nBytesRead = fread(cBuffer, 1, sizeof(cBuffer), m_pTranFile);
    if (nBytesRead == 0)
    {
    writeTolag("fread=0!");
    break;
    }

    nRet = send(CONNSOCKET,(char*)cBuffer,nBytesRead,0);
    if( nRet == 0 )
    {
    writeTolag("nRet == 0!");
    return -1;
    }
    if( nRet == -1 )
    {
    DWORD error = GetLastError();       // 此处10060
    char a[10];
    itoa(error,a,10);
    writeTolag(a);
    writeTolag("send error!");
    Sleep(1);
    return -1;
    } if (nRet == nBytesRead) {
    nSum += nBytesRead;
    }  if( nSum >= ( nPix*nstep ) )
    {
    HandleStatus( TRANS_EVENT_PROGRESS , nSum );
    nstep++;
    }

    } while (nSum <  m_nFileLength && !m_bStop) ;就是send的时候会出现,按说6秒那么长...