客户端发心跳包给服务端,服务端接收到这个包后,需不需返发回客户端?

ttnewday 2009-08-21 08:45:43
客户端发心跳包给服务端,服务端接收到这个包后,需不需返发回客户端?
...全文
829 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
rightorwrong 2009-11-23
  • 打赏
  • 举报
回复
服务端拔掉网线后,客户端发送还是成功的
wu14245670 2009-08-25
  • 打赏
  • 举报
回复
不用回
俗话说没有消息就是好消息
windos里如果你成功不会给你提示的
如果成功还弹出对话框看着不舒服
但是如果没有访问服务器成功你弹出错误才OK
这样合情合理
jyh_baoding 2009-08-25
  • 打赏
  • 举报
回复
你随意,只要达到目的就可以
ok1234567 2009-08-24
  • 打赏
  • 举报
回复 1
视通讯模式而定
异步模式下,是需要回的
awjx 2009-08-23
  • 打赏
  • 举报
回复
发给心跳包服务器的心跳包,一般是不要回的。
双方应该这样处理:
客户端定时发包,当发送失败即视为连接断开;
服务器为每个客户端计数,当超过定时间隔*1.5的时间未收到心跳包,则视为客户端已掉线。
如果服务器还要应答,增加了服务器的负担,你想,如果100个客户端要应答100次,如果10000个呢?再增加呢?
Conry 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ttnewday 的回复:]
引用 6 楼 shenyi0106 的回复:
引用 5 楼 ttnewday 的回复:
我测试了一下,如果客户端send包时,如果掉网了,那么就会出现SOCKET_ERROR,好像不用服务端回复一个包给客户端,客户端也能检测到网络出错了。这是怎么回事呢?

那你试试直接把服务器网线拔掉,看看会如何;或者直接拔电源看看有什么效果


就是把网线拔掉了,send时出现SOCKET_ERROR,所以,我想,应该不用服务端返回一个包的。如果客户端发了一个包给服务端,要求服务端回发,并开始记时,但服务端这边恰好繁忙,一时来不及返回一个包,而客户端的计时时间到了上限了,但还没收到包,那么就误以为网络掉线了(实际上还是连着的),于是关闭并重连,那岂不是有问题?
[/Quote]
还有就是一般也不是检测一次,最少3次才认为掉线,
再说了只要你能收到正常的数据包,就应该重置计时了,因为既然正常收据都收到了,不就说明server在线吗
Conry 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ttnewday 的回复:]
引用 6 楼 shenyi0106 的回复:
引用 5 楼 ttnewday 的回复:
我测试了一下,如果客户端send包时,如果掉网了,那么就会出现SOCKET_ERROR,好像不用服务端回复一个包给客户端,客户端也能检测到网络出错了。这是怎么回事呢?

那你试试直接把服务器网线拔掉,看看会如何;或者直接拔电源看看有什么效果


就是把网线拔掉了,send时出现SOCKET_ERROR,所以,我想,应该不用服务端返回一个包的。如果客户端发了一个包给服务端,要求服务端回发,并开始记时,但服务端这边恰好繁忙,一时来不及返回一个包,而客户端的计时时间到了上限了,但还没收到包,那么就误以为网络掉线了(实际上还是连着的),于是关闭并重连,那岂不是有问题?
[/Quote]
看清楚
是把服务端的网线拔掉,不是客户端
ttnewday 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shenyi0106 的回复:]
引用 5 楼 ttnewday 的回复:
我测试了一下,如果客户端send包时,如果掉网了,那么就会出现SOCKET_ERROR,好像不用服务端回复一个包给客户端,客户端也能检测到网络出错了。这是怎么回事呢?

那你试试直接把服务器网线拔掉,看看会如何;或者直接拔电源看看有什么效果
[/Quote]

就是把网线拔掉了,send时出现SOCKET_ERROR,所以,我想,应该不用服务端返回一个包的。如果客户端发了一个包给服务端,要求服务端回发,并开始记时,但服务端这边恰好繁忙,一时来不及返回一个包,而客户端的计时时间到了上限了,但还没收到包,那么就误以为网络掉线了(实际上还是连着的),于是关闭并重连,那岂不是有问题?
ziplj 2009-08-21
  • 打赏
  • 举报
回复
我们公司是做GPS的 设备发送过来的心跳包我们是不用回的
但是如果是一般的两个电脑应用程序 这个心跳包还是应该回
不回的原因有两种 一种是流量问题 一种是设备收到了可能也不回复
其实主要还是流量问题 一般来说 应用程序可以无视流量
shenyi0106 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ttnewday 的回复:]
我测试了一下,如果客户端send包时,如果掉网了,那么就会出现SOCKET_ERROR,好像不用服务端回复一个包给客户端,客户端也能检测到网络出错了。这是怎么回事呢?
[/Quote]
那你试试直接把服务器网线拔掉,看看会如何;或者直接拔电源看看有什么效果
ttnewday 2009-08-21
  • 打赏
  • 举报
回复
我测试了一下,如果客户端send包时,如果掉网了,那么就会出现SOCKET_ERROR,好像不用服务端回复一个包给客户端,客户端也能检测到网络出错了。这是怎么回事呢?
shenyi0106 2009-08-21
  • 打赏
  • 举报
回复
如果你的客户端需要检测服务器是否宕机的话,那么就需要回复,否则就不需要回复了.
tongxu1984 2009-08-21
  • 打赏
  • 举报
回复
回个,这样确定客户端还活着。
KHacker_001 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ziplj 的回复:]
这个看你的程序而定了
你回了  客户端可以知道
一般来说  还是要回的 
如果对流量没有什么要求的话  应该回复一个心跳包
[/Quote]楼上正解,如果客户端需要确认服务器端收到这个包的话,那肯定要服务器返回信息的 ,这和tcp的握手差不多 呵呵
ziplj 2009-08-21
  • 打赏
  • 举报
回复
这个看你的程序而定了
你回了 客户端可以知道
一般来说 还是要回的
如果对流量没有什么要求的话 应该回复一个心跳包

18,356

社区成员

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

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