2013-05-07 37 views
0

嘿,我只是一個網絡初學者。互聯網上的兩個Android設備之間的直接TCP/IP網絡

是否有可能使用互聯網上的套接字連接兩個android設備而不使用任何中間專用服務器,鑑於在wifi和GPRS/3G連接中有Nat路由器。

我聽說你需要首先發送一個外發消息到其他設備,然後只有NAT將允許該設備回覆給你。但是,當設備在NAT後面時,第一個消息或數據包將如何到達其中的任何一個?

編輯:觀察 - >當我查詢我的公共IP地址的位置,我得到隨機的地方 像其他城市,有時其他國家!怎麼了?誰能解釋一下?

回答

1

這種解決方案的總體設計涉及使用第三方服務器。爲了客戶彼此連接,他們的公共IP(即,NAT IP)必須被另一方知道。當我需要類似的東西時,我實現了STUN,這是建立對等連接的ICE技術的一部分。 STUN支持TCP和UDP流量。如果你想了解STUN,你還應該閱讀關於TURN

即使STUN要求第三方的用戶能夠直接連接到客戶端,但仍有許多公共STUN服務器可用。這裏是one of the lists快速谷歌搜索出現了。

+0

因此,它就像您聯繫服務器一樣,該服務器爲您提供您的公共IP和端口,以便其他設備可以使用您的公共IP和端口!不是嗎?但是當兩個設備都在後面說限制錐體(ip或端口)NAT時,設備如何與其他設備聯繫,即使有其ip和端口 – Allahjane 2013-05-10 18:51:01

+0

是的,這或多或少是正確的。 「算法」 - 維基百科有關TCP打孔的文章部分給出了一些技術示例:http://en.wikipedia.org/wiki/TCP_hole_punching – 2013-05-12 10:42:32

相關問題