社区
网络编程
帖子详情
p2p发送心跳包
Torch009
2008-04-19 11:10:21
最近做了个p2p的程序,刚开始连接的时候客户端可以互相通信,过2-3分钟不通信的话就连接不到对方了,即使记下对方经过NAT转换后的IP:port也不行,应该是NAT保持端口映射的时间是2-3分钟。想在程序里加心跳包,考虑不成熟,如果每次能够打通洞以后settimer的话又有其它一些情况要考虑。做个这方面和熟悉这个的兄弟给个思路。
好久没放分了,兼散分。问题解决了另开贴再散200.
...全文
361
25
打赏
收藏
p2p发送心跳包
最近做了个p2p的程序,刚开始连接的时候客户端可以互相通信,过2-3分钟不通信的话就连接不到对方了,即使记下对方经过NAT转换后的IP:port也不行,应该是NAT保持端口映射的时间是2-3分钟。想在程序里加心跳包,考虑不成熟,如果每次能够打通洞以后settimer的话又有其它一些情况要考虑。做个这方面和熟悉这个的兄弟给个思路。 好久没放分了,兼散分。问题解决了另开贴再散200.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
guoln1010
2011-01-29
打赏
举报
回复
[Quote=引用 22 楼 laiyiling 的回复:]
我想你已经确定要使用心跳包了,只是想得到实现心跳的方案,通常也就是定时器或者线程。我建议你把定时器也放在一个线程里面运行,这个线程还可以处理其他的必要工作!
[/Quote]
我是把县城都放在了定时器里结果也是出现楼主的现象,长时间不操作就是连接失败。。。
AppZ
2010-01-24
打赏
举报
回复
mk
ddddfbb
2008-04-23
打赏
举报
回复
jf
Kudeet
2008-04-23
打赏
举报
回复
我想你已经确定要使用心跳包了,只是想得到实现心跳的方案,通常也就是定时器或者线程。我建议你把定时器也放在一个线程里面运行,这个线程还可以处理其他的必要工作!
Torch009
2008-04-23
打赏
举报
回复
NND,300分都没人进来顶一下。再等一天结贴。
yuan8708
2008-04-22
打赏
举报
回复
如果B要判断与A是否连接,你就发给B。
否如果C要判断与A是否连接,你就发给C。
依次类推
如果B、C 长时间收不到A的包,就认为与A断开了。
atiansk2006
2008-04-21
打赏
举报
回复
[Quote=引用 17 楼 ouyh12345 的回复:]
引用 2 楼 zhdsheng 的回复:
帮顶
[/Quote]
ddddfbb
2008-04-21
打赏
举报
回复
[Quote=引用 17 楼 ouyh12345 的回复:]
引用 2 楼 zhdsheng 的回复:
帮顶
[/Quote]
ouyh12345
2008-04-21
打赏
举报
回复
[Quote=引用 2 楼 zhdsheng 的回复:]
帮顶
[/Quote]
skyful123
2008-04-21
打赏
举报
回复
同意 心跳包 最简单实用
zhdsheng
2008-04-19
打赏
举报
回复
帮顶
Torch009
2008-04-19
打赏
举报
回复
另外我建了个网络群:59670389,有兴趣的兄弟可以加入。
Torch009
2008-04-19
打赏
举报
回复
[Quote=引用 9 楼 cnzdgs 的回复:]
只能用心跳包,由Client发向Server,可以每30秒一次或者频率更高,可以考虑用SetTimer也可以用一个线程。
[/Quote]
用线程的话发送心跳包后sleep一段时间,发送了一定次数后没有应答强制结束线程
cnzdgs
2008-04-19
打赏
举报
回复
[Quote=引用 12 楼 jinghao666666 的回复:]
由Client发向Server?????????洞打通以后Server就不起作用了。应该是Client----》Client吧。连接上以后开始SetTimer,发送心跳包。这样直接一点。当然连接上Server以后也来个SetTimer。这样做Client----》Client不是多余的吧?
[/Quote]
我说的Server就是你的另一台Client。
Torch009
2008-04-19
打赏
举报
回复
算了,不另开贴了,明天再加200分。来者有份。
Torch009
2008-04-19
打赏
举报
回复
由Client发向Server?????????洞打通以后Server就不起作用了。应该是Client----》Client吧。连接上以后开始SetTimer,发送心跳包。这样直接一点。当然连接上Server以后也来个SetTimer。这样做Client----》Client不是多余的吧?
china_bai
2008-04-19
打赏
举报
回复
[Quote=引用 9 楼 cnzdgs 的回复:]
只能用心跳包,由Client发向Server,可以每30秒一次或者频率更高,可以考虑用SetTimer也可以用一个线程。
[/Quote]
scq2099yt
2008-04-19
打赏
举报
回复
up
cnzdgs
2008-04-19
打赏
举报
回复
只能用心跳包,由Client发向Server,可以每30秒一次或者频率更高,可以考虑用SetTimer也可以用一个线程。
Zhymax
2008-04-19
打赏
举报
回复
不传输数据没法在nat上保留连接,肯定得发心跳包,
你可以专门用一个线程管理客户端之间的心跳包
加载更多回复(5)
公网qq聊天软件
1、
心跳包
监听;防止网络中断。 2、增加部门分类,TREELIST美化; 3、公网
P2P
打洞,跨越各个类型的NAT网络 4、修改FORM风格,做了简单的美化; 5、数据包收到回复和过期提示功能; 6、使用了消息队列;对消息
发送
...
Udp
P2P
.zip
7、客户端处理”ConnectReq##IP##端口”,获取对方IP和端口之后
发送
探测包”TestPackage”,并通知Server已经
发送
过。向服务端
发送
”ConnectReqACK##ip##端口” 8、服务端收到应答向客户端
发送
”ConnectReqACK##ip##...
P2P
原理与实现(含NAT穿透)
本套课程主要讲解
P2P
开发,因为
P2P
开发无论是就业还是创业都是一个很好的方向,只是因为
P2P
开发中NAT穿透掌握的人很少,所以才导致真正掌握
P2P
开发技术的人很少。
p2p
开发中比较有价值的技术点: 1 NAT穿透 2 分布式...
心跳包
(有个疑虑如果到时间了,应该
发送
心跳包
了,可是恰恰串口又要
发送
自己定义的数据,如何处理呢?)连接空闲时候才启用的
心跳包
,当持续收发数据就能判断连接正常没必要启用
心跳包
判断连接是否正常
心跳包
就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔
发送
,类似于心跳,所以叫做
心跳包
。 中文名
心跳包
外文名 Heartbeat packet 释义 客户端和服务器间的命令字 ...
一文读懂即时通讯应用中的网络
心跳包
机制:作用、原理、实现思路等
本文原文由作者“张小方”原创发布于“高性能服务器开发”微信公众号,原题《
心跳包
机制设计详解》,即时通讯网收录时有改动。 1、引言 一般来说,没有真正动手做过网络通信应用的开发者,很难想象即时通讯应用中...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章