有关TCP的断线和重连问题

snowwin 2004-07-05 04:27:11
小弟现在做的一个网络数据传输程序在运行时网络有可能断开,就不可避免的要进行重连的处理,我现在的做法是在Server端(用的是Socket API)不停的侦听,如果有新的连接进来,我就把原来的socket关掉,然后开个新的。现在Client端用的是CAsyncSocket类,接收的部分写在一个线程中,我怎么判断现在已经断线了,然后怎么重连啊?是不是先关闭当前的Socket然后再Create,Connect,然后再启动线程接收啊?希望各位大哥帮帮忙!
...全文
467 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gary137 2004-07-13
  • 打赏
  • 举报
回复
最好不要使用MFC的socket内裤!

我使用的是自己封装的socket类。
PiggyXP 2004-07-13
  • 打赏
  • 举报
回复
嗯,一般就是发送心跳包了


ps: 除了“楼猪”改成“楼主”以外,这个问题也是我想知道的。^_^

为什么很多人都喜欢用CSocket或CAsyncSocket呢?

自由的风 2004-07-13
  • 打赏
  • 举报
回复
服务器端处理FD_ACCEPT事件
判断是否掉线了,一般还是定时发送一些数据到服务器,加入规定时间没有收到,就说明掉线了

==============================================================================
ps.想问一下楼猪,现在学校是不是都是教用CSocket或CAsyncSocket,都不用socket API了?
myxs 2004-07-13
  • 打赏
  • 举报
回复
断线利用已连接socket的返回值<0来判断,至于是否要重连是肯定要的。在判断断了以后重新连接!
mrelay 2004-07-13
  • 打赏
  • 举报
回复
至于,网络是否断了,你可以通过socket的返回值,或者自己定时发送联络包,在自己定义的时间内没有收到对端发送过来的联络包,就认为是断了。
mrelay 2004-07-13
  • 打赏
  • 举报
回复
如果是对端的网络断了,靠socket的返回值判断,要几分钟的时间才能发现。在这之前,socket的发送函数,还会提示发送正确的。我的做法是在收到对方发送过来的消息之后,像对方发送一个应答的消息。

18,356

社区成员

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

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