关于csocket的关闭

kerbo 2006-04-04 01:27:18
程序退出时,在此处产生错误:

ASSERT(pState->m_hSocketWindow != NULL);

查了资料,说是可能是因为creat和close没在同一个线程中,可是我就没有用过多线程阿,只是用到了csocket的onaccept,onreceive,onclose等消息函数....

恳请高手解答~~
...全文
188 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
charles_y 2006-04-17
  • 打赏
  • 举报
回复
jf
kerbo 2006-04-17
  • 打赏
  • 举报
回复
奇怪,没有别人的回复,居然不能结贴,除非删除帖子?!
kerbo 2006-04-17
  • 打赏
  • 举报
回复
问题已解决.
原因是,OnClose()检测不到客户端网线拔掉等物理故障,所以负责接收的socket在监听socket监听到客户端再一次连接的时候是仍然存在的(INVALID_SOCKET),此时如果再次ACCEPT(),亦即再次创建一个新的接受socket,就会出错了。
所以,我的解决方法是,在每次accept(socket)之前,先看此socket是否有效,即是否是INVALID_SOCKET,是则accept,否则先close,再accept。

THAI'T IT!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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