SOCKET句柄被Attach后为什么会断开连接?

b5651090 2010-06-16 05:36:20
我在一个线程中用SOCKET创建了一个句柄clisock,然后clisock跟对方连上了,
连上后执行下面语句
CNetSocket socket;(CNetSocket是CSocket的派生类)
socket.Attach(Contact->ClientSocket);
这时查看对方网络连接发现clisock这个连接已断开,出现close_wait。

可以确定是这两句导致clisock断开的。因为把这两句注释掉后连接正常。

Attach()会导致socket断开吗?
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ282881515 2010-06-17
  • 打赏
  • 举报
回复
一般 你new出一个对象 这样比较安全些
cattycat 2010-06-16
  • 打赏
  • 举报
回复
不要用临时对象,临时对象被销毁就调用析构函数的。
话说一定要用MFC封装的CSocket么
hfCoder 2010-06-16
  • 打赏
  • 举报
回复
帮 顶
d5651090 2010-06-16
  • 打赏
  • 举报
回复
析构函数就是销毁对象用的,临时对象在使用后必然调用析构。
你可以在线程外创建一个对象,这样线程结束就不会被销毁了。
xiaopoy 2010-06-16
  • 打赏
  • 举报
回复
是不是不支持attack的socket?
b5651090 2010-06-16
  • 打赏
  • 举报
回复
我又发现了,不是线程结束了,而是Attach()后不知道为什么就进入析构函数了?
b5651090 2010-06-16
  • 打赏
  • 举报
回复
我知道什么原因了,是Attach()后线程结束,调用了CNetSocket的析构函数把连接中断了。
但我并没有让线程结束的语句啊,线程应该没有终结啊,它为什么就掉用析构函数了呢?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧