关于P2P打洞的原理。

我看见佛 2012-08-10 08:48:50
情况:多个客户端、一个服务器。

1.客户端登陆,服务器登记用户的IP和PORT。登陆成功后客户有个定时器向服务器发送UDP信息,来保持在线。

2.现在是当两个客户端要互相发信时,客户A根据客户端B的IP和PORT(服务器端取的)向客户B发送把洞命令,维持连线。

问:
1.在测试中发现:用服务器端取的IP和PORT就可以实现互相正常通信了,请问客户A根据客户端B的打洞还有必要吗?

2.还有就是创建一个scoket后,一个scoket就占一个端口?

3.按上面方方法:客户A连服务器所用的端口,也可以用来客户端A和客户端B及其它客户端相连?

对这方面不清楚,请各位指教下。
...全文
307 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hejing_aaron 2012-09-15
  • 打赏
  • 举报
回复
来学习的,希望有所帮组!谢谢!
xiaowei_001 2012-08-13
  • 打赏
  • 举报
回复
是这样的,UDP是可以穿透防火墙的,假设有服务器S,客户端A、B,A<->S,B<->S相互通信正常,假设A、B的防火墙开的话,A<->B就不一定
能通信正常,也就是说不可靠,这时如果A、B间每隔一定时间进行相互捂手,则可有效解决这个问题,你可找两台计算机进行测试
xiaowei_001 2012-08-13
  • 打赏
  • 举报
回复
有必要的
我看见佛 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

udp是可以了
[/Quote]没有明白你所说的意思啊、
haitao 2012-08-12
  • 打赏
  • 举报
回复
udp是可以了
我看见佛 2012-08-12
  • 打赏
  • 举报
回复
另:大家一般情况下,udp打洞消息多长时间发一次?1S或多少?较可靠?
我看见佛 2012-08-11
  • 打赏
  • 举报
回复
谢谢1L的回答,各位也发表下见解吧!
CCDDzclxy 2012-08-10
  • 打赏
  • 举报
回复
有好多情况啊~
A B 都在nat后面,一方在nat后面,在多层nat后面,... 情况多多 。

问1 ,貌似没必要
问2 ,洞打通后,就是和平常的skt通信一样的了
问3 ,短时间内应该可以。打洞目的是在nat上留下两端IP端口的对应。对于不同协议不同nat,这个对应的保留时间也不同,在这个对应失效之前都是可以的。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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