p2p通信 java nat_通过互联网进行Android P2P(直接连接)(NAT后面)

我正在开始一个小型项目,基本上是经典战舰游戏的多人游戏(与超过两个玩家一样) .

在我深入编码之前,我试图解决的一个问题是多个玩家之间的沟通问题 . 当前的可能性是使用中央HTTP服务器作为通信的中央集线器(与Android C2DM API结合以允许从HTTP服务器到设备的推送通信) . 这似乎是一个很好的解决方案,因为从理论上讲,只要您可以访问Internet,它就应该可以正常工作,无论您是否支持NAT .

然而,所提出的解决方案具有存在单个故障点/额外负载(网络服务器)的缺点 . 所以我想尝试其他选择 . 我想过在客户端之间使用套接字 Build 直接连接(网络服务器只是用作初始会合点),但是这只有在所有设备都在同一网络中时才能正常工作 . 考虑到今天我们几乎总是落后于路由器的NAT,我怎样才能实现直接通信?我一直在阅读有关打孔的内容,但我找不到任何有良好记录的好文库(包含很好的使用示例),并且肯定适用于Android . 大多数(如果不是全部)打孔技术(STUN,ICE等等)广泛可用只能与UDP一起使用,这对于音频/视频以及可能丢失一些消息的实时多人游戏来说很好,但对于多人转向基于游戏,保证每个回合数据的传递非常重要(这是不可能直接用UDP进行的) .

那么任何想法如何在NAT后面的 Android 设备之间实现可靠的打孔(最好通过TCP)?它不必在100%的情况下工作(可能不支持某些陌生人的NAT),但如果它适用于大多数情况则会很好 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值