我在一个线程中用SOCKET创建了一个句柄clisock,然后clisock跟对方连上了,
连上后执行下面语句
CNetSocket socket;(CNetSocket是CSocket的派生类)
socket.Attach(Contact->ClientSocket);
这时查看对方网络连接发现clisock这个连接已断开,出现close_wait。可以确定是这两句导致clisock断开的。因为把这两句注释掉后连接正常。Attach()会导致socket断开吗?

解决方案 »

  1.   

    我知道什么原因了,是Attach()后线程结束,调用了CNetSocket的析构函数把连接中断了。
    但我并没有让线程结束的语句啊,线程应该没有终结啊,它为什么就掉用析构函数了呢?
      

  2.   

    我又发现了,不是线程结束了,而是Attach()后不知道为什么就进入析构函数了?
      

  3.   

    不要用临时对象,临时对象被销毁就调用析构函数的。
    话说一定要用MFC封装的CSocket么
      

  4.   

    一般  你new出一个对象  这样比较安全些