socket连接不上的问题

boylafong 2015-06-16 03:50:22
做了一个简单的服务器跟客户端

connect没有问题,双方create都成功

用的是CSocket(自己写了个类继承)

Client跟Server端connect上以后send什么的都没有问题。

问题:
当client 跟server端connect以后,这时候不send,马上server进行close,client也进行close
这时候再connect就连不上了,两边程序重新启动也不行,得过一段时间才能再连上

发现问题所在:
我在Server的CSocket类的OnAccept中
Accept()了一个CSocket类(用来做OnReceive)的。
如果去掉这段话,没有问题,我怀疑是Onreceive在阻塞,导致colse后没有完全close
所以我在server.close()前加了个server.CancelBlockingCall不够没用

怎么解决啊
...全文
353 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
boylafong 2015-06-17
  • 打赏
  • 举报
回复
引用 2 楼 jzycode 的回复:
看你用什么CSocket类,啥也不说
我的类是CMyServer:public CSocket CSocket : public CAsyncSokcet
_船长_ 2015-06-17
  • 打赏
  • 举报
回复
看你用什么CSocket类,啥也不说
boylafong 2015-06-17
  • 打赏
  • 举报
回复
没人知道吗?
boylafong 2015-06-17
  • 打赏
  • 举报
回复
引用 4 楼 oyljerry 的回复:
Close并没有马上结束,进入了close_wait阶段。需要隔一段时间再断开。
谢谢了。
boylafong 2015-06-17
  • 打赏
  • 举报
回复
引用 4 楼 oyljerry 的回复:
Close并没有马上结束,进入了close_wait阶段。需要隔一段时间再断开。
根据你的提示已经解决问题了,用linger m_sLinger;
boylafong 2015-06-17
  • 打赏
  • 举报
回复
引用 4 楼 oyljerry 的回复:
Close并没有马上结束,进入了close_wait阶段。需要隔一段时间再断开。
如何立刻结束呢? 我双方退出程序再启动,一段时间内也连不上。。。
oyljerry 2015-06-17
  • 打赏
  • 举报
回复
Close并没有马上结束,进入了close_wait阶段。需要隔一段时间再断开。

18,356

社区成员

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

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