如题,是不是只能用非阻塞模式下的select进行超时控制?

解决方案 »

  1.   

    查MSDN中关于
    setsockopt
    的帮助看吧
    俺用他设置过接收超时,但没有设置过连接超时,你自己看看
      

  2.   

    阻塞模式connect有超时吗?好像它会立即返回的。
      

  3.   

    你去连一个不存在的ip地址试试;
    setsocketopt没法设置连接超时,只能设置接受,发送超时
      

  4.   

    阻塞模式下,connect不能设置超时,系统让它在45秒后返回失败。
    只有发送可以设置超时
      

  5.   

    20-21秒之间  ,  cpu占用率不高 网络空闲的情况下
      

  6.   

    做了一下试验 1 用改变m_nTimeOut 是无法控制connect超市的
    2 连接有效ip的话返回比较快  
    3 连接无效ip 大概21秒返回false
      

  7.   

    堵塞模式
    服务器还没有打开
    connect有效ip
    过了24秒才返回
    不想改成非堵塞有什么办法可以解决吗
      

  8.   

    阻塞模式也有超时!
    用select只是为了缩短这个超时时间.
      

  9.   

    setsockopt肯定是不行的,这个我用过。
    用select应该可以,但我没有试验过。
      

  10.   

    关注!!!就算用异步Socket都时没用的!我试过用CAsyncSocket和CSocket两个类,
    CSocket要等大概20多秒才会返回超时。你用同步类希望减少超时值是希望节省cpu和内存吧?CAsyncSocket虽然是异步的,但Connect时同样要等20多秒才会超时返回(OnConnect),你可以在OnConnect之前delete 或 Close CAsyncSocket对象,但是我告诉你,非常遗憾!这样做是有时会出错的,大概30次会有一次出错,如果改为在OnConnect之后再delete 或 Close就100%不会出错。这个不知是不是CAsyncSocket的bug,而且这种运行时错误用try{}和cache(...)无法截获!程序就被迫推出了。请高手救救我!希望能够得到一个好的减少超时时间的方法。如果用CSocket,不知可不可以在Connect阻塞的时候,强制结束该线程,如果可以但又怎样解决在线程外结束线程造成的内存泄漏?SetsockOpt我查过,是没有减少超时的设置的!
      

  11.   

    如果程序要频繁地新建较多的连接,每次连接都至少要等20~60秒的话,这个用vc编写的程序在效率上说简直就是垃圾!!简直就是vc程序员的耻辱!!