同步模式下,使用SOCKET API编程时的网络连接超时设置程序:
connect超时
send超时
recv超时急,急,急.高分.

解决方案 »

  1.   

    int iValue, iLen=sizeof(iValue);
    iValue = ???;//超时值
    setsockopt(m_sSock, SOL_SOCKET, SO_RCVTIMEO, (char *)(&iValue), iLen); //接收超时setsockopt(m_sSock, SOL_SOCKET, SO_SNDTIMEO, (char *)(&iValue), iLen);//发送超时
      

  2.   

    sorry!应该这样:
    setsockopt(m_sSock, IPPROTO_TCP1, SO_RCVTIMEO, (char *)(&iValue), iLen); //接收超时setsockopt(m_sSock, IPPROTO_TCP1, SO_SNDTIMEO, (char *)(&iValue), iLen);//发送超时
      

  3.   

    connect超时,主要是目的IP地址不存在时的超时太长了,如何设置.
      

  4.   

    除了通过用setsockopt设置socket选项,也可以用线程的方法,比如:
    // 负责连接的线程,参数为socket
    void connnectthread(socket s)
    {
    connect(s);
    }main()
    {
      //启动连接线程
      h_thread = beginthread(connectthread);  // 可以根据返回值来判断是连接完成,还是超过指定的timeout
      waitforsingleobject(h_thread, timeout);
     
    }
      

  5.   

    to xuying:
    这们并不能设置CONNECT超时大小值呀.如何减少timeout值呢?
      

  6.   

    setsockopt(m_sSock, IPPROTO_TCP1, SO_SNDTIMEO, (char *)(&iValue), iLen);//这个函数,我在XP,VS.Net下根本没用啊,阻塞的照样阻塞,我愁了一个多礼拜了:~(
      

  7.   

    to  wuxuan(真心英雄) :
    你在waitforsingleobject()函数中最后一个参数是timeout,如果过了这个指定的时间,该函数返回值为TIME_OUT,此时,你可以中止这个线程,连接过程就结束了。
      

  8.   

    真的没人能解决吗connect 超时吗?
      

  9.   

    还是我自己解决了,我找到了一个,如果谁需要,可以看看.
    http://www.codeguru.com/internet/timeoutsocket.shtml