关于心跳包的问题

screen12 2016-05-18 08:27:24
我们知道,处在内网中的客户端,向服务器发送一个数据包以后,会在路由器上建立一个映射,把内网IP和端口映射成外网IP和端口。

而且只要一段时间(比如60秒)没有数据传送,那这个映射会失效。所以,客户端必须每隔一段时间发送一个心跳包。

我的问题是:服务器发送给客户端的数据,是否也起到心跳包的作用?客户端一个心跳包不发,服务器向客户端每隔30秒发一个数据包,是否也能起到维持这种映射的作用?

...全文
958 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2016-05-20
  • 打赏
  • 举报
回复
引用 4 楼 screen12 的回复:
[quote=引用 3 楼 xian_wwq 的回复:] 可以维持, 长链接由客户端发心跳来维持比较常规
我的程序也是由客户端发送心跳包的。 但是,我们得尽可能的减轻网络的负担。比如:心跳包本来是30秒发送一次。可是在20秒后,客户端向服务器发送了一次数据。这次发送数据可以起到心跳包的作用。那么心跳包就不必按预定时间(也就是10秒后)发送了。可能重置它的时钟,在30秒后发送。 同样,服务器传来数据,这个既然能起到心跳包的作用,那也可以把心跳时钟重置一下,让它在30秒以后发送。这样可以减轻系统和网络的负担。 [/quote] 个人观点,供参考 1.网络负担其实一样,客户端发给服务器和服务器发给客户端,带宽占用无差别; 2.服务器的地位比客户端重要的多,客户端一般来说压力都不会太大,反而是服务器资源要精打细算,要省着用。 作为通讯软件,发生中断需要重连处理都是最基本的,这些是客户端的本分工作
screen12 2016-05-19
  • 打赏
  • 举报
回复
引用 3 楼 xian_wwq 的回复:
可以维持, 长链接由客户端发心跳来维持比较常规
我的程序也是由客户端发送心跳包的。 但是,我们得尽可能的减轻网络的负担。比如:心跳包本来是30秒发送一次。可是在20秒后,客户端向服务器发送了一次数据。这次发送数据可以起到心跳包的作用。那么心跳包就不必按预定时间(也就是10秒后)发送了。可能重置它的时钟,在30秒后发送。 同样,服务器传来数据,这个既然能起到心跳包的作用,那也可以把心跳时钟重置一下,让它在30秒以后发送。这样可以减轻系统和网络的负担。
xian_wwq 2016-05-19
  • 打赏
  • 举报
回复
可以维持, 长链接由客户端发心跳来维持比较常规
微型蚂蚁 2016-05-19
  • 打赏
  • 举报
回复
可以 。
Eleven 2016-05-18
  • 打赏
  • 举报
回复
也可以的~~~

18,356

社区成员

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

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