如果worker thread成功connect,就向主线程发一个消息。在主线程中设一个timer,如果多少秒钟worker thread没有发消息,就调用TerminateThread杀掉该worker thread.

解决方案 »

  1.   

    使用WSACancelBlockingCall可以中断阻塞调用,在CSocket用CancelBlockingCall
    结束worker thread用::PostThreadMessage(nThreadID,WM_QUIT,0,0),nThreadID怎么得到不用说了吧!
      

  2.   

    是用的api函数connect,非CSocket::Connect函数呀
      

  3.   

    to vcmfc:好象没有函数可以中断阻塞调用呀!
      

  4.   

    设置为非阻塞模式ioctlsocket。
    可以使用select检查是否可写,若可写则连接成功。我想应该可以在连接成功之前closesocket,资源可能不会立即释放。
    可以设置为强制结束setsockopt,也许资源可以立即释放.
    (这些没有明确说明,不过对于主动连接的SOCKET,是否立即释放资源可能并不重要)
      

  5.   

    to jiiujiejushi:
    此时,connect函数尚未返回,ioctlsock能行吗?