我开始一个小项目,基本上是一个多人(如在两个以上的玩家)的经典战舰游戏的变化。
我想要解决之前,我潜入编码的一个问题是多个玩家之间的沟通问题。 的电流可能是使用一个中央HTTP服务器用于通信中心毂(加上了Android C2DM API,以允许从HTTP服务器到设备推送通信)。 这似乎是一个很好的解决方案,因为从理论上讲,只要你能上网,应该很好地工作,无论你是在NAT之后还是不行。
然而,所提出的解决方案具有现有失败/额外的负载(Web服务器)中的一个单点的缺点。 所以我想试试其他选项。 我想制作使用的客户端(与只是被用来作为初始交汇点的网络服务器)之间的插座直接连接的,但是,如果所有设备都在同一个网络中,这将只是很好地工作。 考虑到今天我们几乎都是路由器的NAT后面我怎么能实现直接沟通? 我一直在阅读有关打孔,但我无法找到是有据可查(含利用的很好的例子),以及适用于Android肯定任何好的库。 另外大部分(如果不是全部)打孔技术(STUN,ICE等)广泛仅适用于UDP,这是很好的音频/视频和实时多人游戏,可能会失去一些消息的工作,但对于一个多人转基于游戏,以保证每一轮的数据的传递是很重要的(东西,它不可能直接与UDP)。
因此,任何想法如何实现NAT后面Android设备之间的可靠打孔(最好是通过TCP)? 它没有对案件100%(有些陌生的NAT可能不支持)工作,但如果它的工作在大多数情况下,这将是很好。