请教一个问题,如何实现私网间的数据传输,而不通过中心服务器?P2P技术可以解决么?

上岸の鱼 2015-01-19 11:59:33
RT,一般情况下,2台都在私网客户端(IP不是外网)想要进行数据传输,通过C/S结构,客户端A、B都主动注册上中心服务器C,A传输给C,再C传输给A。这样的模型局限性很大,对C的要求也很高。
故想请教一下大家,有没有办法实现A跟B之间的直接传输,我在网上查了一下,不知道P2P技术能否解决这个问题?
...全文
296 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wy24789 2015-01-21
  • 打赏
  • 举报
回复
试过udp打洞,只偶尔成功过
lzl_2008 2015-01-21
  • 打赏
  • 举报
回复
引用 13 楼 xx7330842 的回复:
[quote=引用 11 楼 oyljerry 的回复:] [quote=引用 10 楼 xx7330842 的回复:] [quote=引用 9 楼 sinservice 的回复:] P2P NAT穿透技术。 ICE是穿透的一个实现策略。但ICE现行标准里没有端口预测,端口预测实现起来并不困难,可以考虑加入。 P2P NAT穿透技术,效果就是让两个客户端直接通信,数据不必通过服务器。这样极大地减轻了服务器负担,降低了成本。
对,你说得太对了,我查了一些资料,说是通过nat协议可以实现的。就是不知道目前有没有这方面现成的比较好的中间件?[/quote] TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞 http://www.vckbase.com/index.php/wv/1471[/quote] 这个好,有空我去测试下再结贴。 另外我想到如果不需要中心服务器C的话,这个方案里估计得广播请求吧?[/quote] 没有中心服务器C是不可能的,广播只在局域网有效。
上岸の鱼 2015-01-21
  • 打赏
  • 举报
回复
引用 11 楼 oyljerry 的回复:
[quote=引用 10 楼 xx7330842 的回复:] [quote=引用 9 楼 sinservice 的回复:] P2P NAT穿透技术。 ICE是穿透的一个实现策略。但ICE现行标准里没有端口预测,端口预测实现起来并不困难,可以考虑加入。 P2P NAT穿透技术,效果就是让两个客户端直接通信,数据不必通过服务器。这样极大地减轻了服务器负担,降低了成本。
对,你说得太对了,我查了一些资料,说是通过nat协议可以实现的。就是不知道目前有没有这方面现成的比较好的中间件?[/quote] TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞 http://www.vckbase.com/index.php/wv/1471[/quote] 这个好,有空我去测试下再结贴。 另外我想到如果不需要中心服务器C的话,这个方案里估计得广播请求吧?
zyjj_99 2015-01-21
  • 打赏
  • 举报
回复
mark
oyljerry 2015-01-21
  • 打赏
  • 举报
回复
引用 10 楼 xx7330842 的回复:
[quote=引用 9 楼 sinservice 的回复:] P2P NAT穿透技术。 ICE是穿透的一个实现策略。但ICE现行标准里没有端口预测,端口预测实现起来并不困难,可以考虑加入。 P2P NAT穿透技术,效果就是让两个客户端直接通信,数据不必通过服务器。这样极大地减轻了服务器负担,降低了成本。
对,你说得太对了,我查了一些资料,说是通过nat协议可以实现的。就是不知道目前有没有这方面现成的比较好的中间件?[/quote] TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞 http://www.vckbase.com/index.php/wv/1471
上岸の鱼 2015-01-21
  • 打赏
  • 举报
回复
引用 9 楼 sinservice 的回复:
P2P NAT穿透技术。 ICE是穿透的一个实现策略。但ICE现行标准里没有端口预测,端口预测实现起来并不困难,可以考虑加入。 P2P NAT穿透技术,效果就是让两个客户端直接通信,数据不必通过服务器。这样极大地减轻了服务器负担,降低了成本。
对,你说得太对了,我查了一些资料,说是通过nat协议可以实现的。就是不知道目前有没有这方面现成的比较好的中间件?
「已注销」 2015-01-19
  • 打赏
  • 举报
回复
P2P NAT穿透技术。 ICE是穿透的一个实现策略。但ICE现行标准里没有端口预测,端口预测实现起来并不困难,可以考虑加入。 P2P NAT穿透技术,效果就是让两个客户端直接通信,数据不必通过服务器。这样极大地减轻了服务器负担,降低了成本。
worldy 2015-01-19
  • 打赏
  • 举报
回复
引用 5 楼 xx7330842 的回复:
[quote=引用 3 楼 worldy 的回复:] 丝网?在一个局域网里?那没有必要使用服务器啊,直接winsock传输不就可以了?不需什么p2p,也不需要什么服务器
不好意思,我可能没说清楚,A跟B分别在两个不同的私网,需要私网穿透的。[/quote] 最简单的办法应该是路由器设置端口映射吧
liuxychad 2015-01-19
  • 打赏
  • 举报
回复
估计要一个简单的服务器,具体不知怎么实现
上岸の鱼 2015-01-19
  • 打赏
  • 举报
回复
引用 4 楼 liuxychad 的回复:
可以参数IPMSG(飞鸽传书),是开源的
不是在一个局域网,我想技术上类似的软件比如PPLIVE、快播等。
上岸の鱼 2015-01-19
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
丝网?在一个局域网里?那没有必要使用服务器啊,直接winsock传输不就可以了?不需什么p2p,也不需要什么服务器
不好意思,我可能没说清楚,A跟B分别在两个不同的私网,需要私网穿透的。
liuxychad 2015-01-19
  • 打赏
  • 举报
回复
可以参数IPMSG(飞鸽传书),是开源的
worldy 2015-01-19
  • 打赏
  • 举报
回复
丝网?在一个局域网里?那没有必要使用服务器啊,直接winsock传输不就可以了?不需什么p2p,也不需要什么服务器
上岸の鱼 2015-01-19
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
就是P2P,还是要有服务器,但是服务器C只是跟两个客户端AB之间沟通,来让双方获取对方的一些网络信息,从而来建立联系 后面发送数据,就是A跟B自己的事情了
感谢版主大大,另外问下,有没有对P2P技术支持比较好的网络通信中间件模块?我之前仅经常使用ICE,好像不支持P2P。
oyljerry 2015-01-19
  • 打赏
  • 举报
回复
就是P2P,还是要有服务器,但是服务器C只是跟两个客户端AB之间沟通,来让双方获取对方的一些网络信息,从而来建立联系 后面发送数据,就是A跟B自己的事情了

18,356

社区成员

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

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