我開始一個小型項目,基本上是一個多人遊戲(如兩名以上玩家)的變體經典戰艦遊戲。安卓P2P(直接連接)通過互聯網(在NAT後面)
我在潛入編碼之前試圖解決的一個問題是多個玩家之間的溝通問題。目前的可能性是使用中央HTTP服務器作爲通信的中心樞紐(加上Android C2DM API以允許從HTTP服務器到設備的推送通信)。這似乎是一個很好的解決方案,因爲從理論上講,只要你能夠訪問互聯網,無論你是否支持NAT,它都應該能夠完美工作。
然而,所提出的解決方案具有存在單點故障/額外負載(web服務器)的缺點。所以我想嘗試其他選擇。我想在客戶端之間使用Sockets進行直接連接(Web服務器只是作爲初始會議點),但是如果所有設備都在同一個網絡中,那麼這種方式只能工作得很好。考慮到今天我們幾乎總是在路由器的NAT後面,我該如何實現直接通信?我一直在閱讀關於打孔技術的知識,但是我找不到任何有很好文檔記錄的良好庫(包含很好的使用示例),並且確實適用於Android。另外,大多數(如果不是全部的話)衝孔技術(STUN,ICE等)只能用於UDP,這適用於音頻/視頻和實時多人遊戲,可能會丟失一些消息,但對於多人遊戲機基於遊戲的保證交付每個回合的數據是非常重要的(這是UDP不可能直接實現的)。
因此,任何想法如何實現在Android設備後面NAT的可靠打孔(最好是TCP)?它不必在100%的情況下工作(一些陌生的NAT可能不被支持),但如果它在大多數情況下工作,它將會很好。
Win Myo Htet提供的解決方案具有很好的潛力(它使用Google自己的基礎架構)。不過,我仍然對Android上的TCP和/或UDP打孔解決方案感興趣。 – petersaints 2012-04-04 16:34:16
你最終以@petersaints結束了什麼? – kishu27 2017-04-26 21:08:15