我想实现在send()10秒后如果发送不成功就终止发送
怎么做?
请给出做这时间限制的代码,谢谢

解决方案 »

  1.   

    问题不在于终止发送。
    在通讯双方连接成功的情况下,send函数不会造成阻塞,如果是接收端缓冲区满,send会立刻返回实际发送字节数或失败,即便双方断开,send也会立刻返回失败。如果你不想在连接(connect)不通时提前结束,可以通过设置连接超时实现。
      

  2.   

    to wangjinwang(王进)
    怎么设置连接超时实现呢?
    能不能给个例子?
      

  3.   

    我的代码:
    // 设定socket接收超时,避免一直等待导致程序失去响应
    DWORD time_out=1000;
    if(setsockopt(NDAP, SOL_SOCKET, SO_RCVTIMEO, (char*)&time_out, sizeof(time_out))== SOCKET_ERROR)
    {
    ShowErrorMessage();
    return ;
    }
      

  4.   

    用 setsockopt 同时设定time_out值
    如果是设定send 那就通过定时器轮询吧 因为send是立即返回的
      

  5.   

    对,我试过,如果不用setsockopt设置超时的话,send在阻塞情况下,发送缓冲区满的话,会一直阻塞下去,直到发送完数据为止。