心跳检测,怎么没用呢?

awjx 2007-04-29 04:03:51
自已做的Server与Client
Client每分钟向Server发送一个包,检测socket是否还处于连接状态!
通过send返回数据与发送字节的长度来判断是否发送成功,
int len = send(hSocket,bt,length);
奇怪的是,我把网线拨掉后,两者都是相等的,即len == length

难道不是这样做心跳检测的吗?

为什么检测不出来呢?
...全文
805 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengfeng_liu 2007-05-01
  • 打赏
  • 举报
回复
心跳检测需要以下步骤:

1 客户端每隔一个时间间隔发生一个探测包给服务器

2 客户端发包时启动一个超时定时器

3 服务器端接收到检测包,应该回应一个包

4 如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器

5 如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了


似乎应该增加一条:
记录超时次数,连续超时n次,服务器挂了
周江涛 2007-04-30
  • 打赏
  • 举报
回复
你的server和client是在同一台机器上吧?
rain4609 2007-04-30
  • 打赏
  • 举报
回复
楼主这样做当然不对了
send返回的是成功发送的数据长度
但是成功发送不等于server接收成功
awjx 2007-04-30
  • 打赏
  • 举报
回复
不在同一台机子,
server在电信托管的机房!
WingForce 2007-04-29
  • 打赏
  • 举报
回复
心跳检测需要以下步骤:

1 客户端每隔一个时间间隔发生一个探测包给服务器

2 客户端发包时启动一个超时定时器

3 服务器端接收到检测包,应该回应一个包

4 如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器

5 如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了
setsailgo 2007-04-29
  • 打赏
  • 举报
回复
应该用udp,服务器要应答,tcp要连接上才能通信

18,356

社区成员

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

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