2012-12-19 60 views
4

我正在嘗試與Android客戶端和Java服務器建立客戶端/服務器模型。 連接通過TCP。Android - Java TCP連接NAT穿越

當Android設備使用WIFI時,我的所有代碼都能正常工作,但是無論何時我連接到無線網絡(例如3g,4g),插座都拒絕連接。

我一直在閱讀關於NAT遍歷,但我不知道從何時開始實施允許連接的必要步驟。

注:我的服務器有一個靜態IP地址

+1

您需要提供更多信息。互聯網上的其他人是否可以連接到互聯網上的服務器(即不在家庭防火牆後面)?您在私人範圍之外使用的地址是?你能連接到其他服務器從android設備(瀏覽,一般tcp或ping)?你有什麼樣的數據計劃在你的Android設備上(它是否涵蓋非瀏覽數據訪問)?沒有答案,但很多問題。 – DrC

+0

是的,我的服務器在我的路由器後面,並且所有的端口轉發都已經處理好了。我有無限的數據,我可以使用數據進行非瀏覽。 –

+1

還有幾件事要測試。如果你去了一個WiFi熱點(即不在與服務器相同的子網上),它是否工作?同樣的問題,但它是否適用於WiFi熱點的筆記本電腦。更進一步的事情來檢查,可能會導致解決方案。 – DrC

回答

2

我的猜測是,你有一個網絡相關的問題。假設您的服務器位於路由器後面,則您的服務器套接字必須綁定到其LAN IP(不直接綁定公共Internet IP)。然後你需要設置端口轉發,防火牆規則等,以確保互聯網上的每個人都可以看到你的服務器(使用在線端口打開檢查器/從另一個網絡telnet是一個很好的測試)

+0

謝謝我會確保端口是開放的。但我可以通過WIFI從不同的子網連接(即通過WAN)。這可能是因爲android軟件可能有問題嗎? –

+0

但是,您可以使用工具(如http://www.canyouseeme.org/或http://www.yougetsignal.com/tools/open-ports/)來檢查連接是否可以從互聯網打開到服務器套接字中?確保您輸入由您的ISP分配的公共IP和您的服務器套接字偵聽的端口。除了防火牆和端口轉發之外,我知道一些ISP阻止未知端口的流量 – gerrytan

+0

是的,我可以看到我的端口沒有使用這些工具之一打開,但是我在我的路由器上設置了所有端口轉發,並確保我服務器上的防火牆允許我的特定端口上的流量。我想我只需要做一些故障排除 –