CAsyncSocket默认是非阻塞的,机执行操作后马上返回,而通常连接后需要短时的延时。
你可以用IOCtl设置为阻塞模式,调用前有一点一定要注意,一定要先调用AsyncSelect(0),具体参见Res
  Good Luck!

解决方案 »

  1.   

    在非阻塞的情况下,Connect总是返回false。
    如果GetLastError返回的值是WSAEWOULDBLOCK (10035), 表示连接尚未结束。这时可重载OnConnect函数处理连接成功后的动作。
      

  2.   


    GetLastError ;Tools:Error Look 
      

  3.   

    在Connect调用后,不论成功与否,都会发出OnConnect消息并返回,与其在Connect后加一个GetLastError不如在OnConnect中测试nErrorCode的值看连接是否成功,成功为0。不成功的话可以在这里继续Connect,直到成功(有点类似于递归调用)。
    另:CAsyncSocket是非阻塞的,不用把Connect放到单独的线程中。