我正在做一個android應用程序,允許用戶在線播放。兩個android設備之間的TCP連接(即使有NAT)
目前,我使用TCP服務器:當兩個人連接時,服務器負責轉發兩個客戶端之間的數據包。
我想用一個帶有谷歌應用引擎的java servlet替換我的服務器。這個新的服務器將被用於連接兩個玩家。
它會以這種方式工作: 玩家A打開一個服務器套接字,然後發送到服務器的連接細節。 當玩家B想對戲,他問到服務器的端口號,他直接連接到A.
的問題是,我不知道,如果玩家A的背後是它會工作NAT。當播放器A打開一個服務器套接字時,會打開其192.168.x.y地址的一個端口,但它是否向端口請求端口轉發?我認爲它不...
所以兩個問題: 即使有NAT或防火牆時,是否可以在兩臺設備之間建立直接連接TCP(我不知道防火牆如何在Android上工作...) 如果這是不可能的,那麼最好的解決方案是什麼:是否有可能使TCP服務器確保與app引擎交換消息?
先謝謝您。
'播放器A打開一個服務器套接字,然後發送到服務器的連接細節。'。對不起,但我甚至不能按照你的方案的第一句話。 – greenapps
該項目(https://github.com/kaklakariada/portmapper)具有UPnP portmapping Java代碼,它可以在J2SE中運行,但不瞭解Android。我已經嘗試過,並在我的Thomson vdsl2路由器上正常工作。我在Java-gaming.org網站上找到了這個項目的鏈接(http://www.java-gaming.org/index.php?topic=22088.0) – Whome