2017-10-05 87 views
0

我想寫一個應用程序,它通過互聯網在兩個設備之間建立直接的TCP \ IP連接。 我有一臺服務器來交換IP地址和端口,但它足以建立連接?直接TCP IP連接需要什麼?

如何處理兩個設備都在同一個IP上(連接到同一個Wi-Fi熱點)的情況?

此外,我不明白設備上的開放端口如何在沒有熱點端口轉發設置的情況下訪問?是否有任何範圍的端口可供應用程序使用?

回答

1

對於大多數情況,您對端口轉發是正確的。

TCP/IP是OSI Layer 4協議。您需要能夠使用已知的IP地址和端口號將數據發送到服務器應用程序。現在在互聯網上時,這可能會變得更加複雜,因爲您通常不會直接與互聯網其他用戶訪問的IP地址進行交互。這是您的公共IP地址。您從ISP獲得的調制解調器可能會實現NAT ,這會將您的私人地址變成您的公共地址。您的調制解調器將阻止所有TCP SYN請求,除非專門爲它提供轉發規則。

這只是一個典型的案例,您還可以考慮將您的調制解調器設置爲DMZ模式,甚至實現您自己的反向代理,如nginx。

+0

很好,但VoIP應用程序如何工作?他們不通過服務器傳輸所有數據 –

+1

取決於實施。我相信VOIP通常使用[SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol),一個第5層協議。所以它不必使用TCP,它可以使用任何它想要的第3層協議。即使使用TCP,也可以實現許多不同的體系結構,其中一些電話是TCP服務器,客戶端或兩者。請查看開源VOIP服務器[Asterisk](https://wiki.asterisk.org/wiki/display/AST/Asterisk+Architecture%2C+The+Big+Picture)瞭解更多信息。 –

+0

SIP!這就是我正在尋找的詞!只需一個字,現在我知道要在哪裏深入挖掘!謝謝 –

0

我已經結束了在Firebase之上的WebRTC構建。

所以,我的問題的實際答案 - STUN。