2014-06-08 27 views
1

如何在有防火牆的情況下通過兩個程序進行通信。我想要一些像套接字,但這不通過防火牆。如果您必須使用第三方資源,這沒關係。我在python中這樣做。當有防火牆時有程序通信嗎?

+0

如何提高這個? – PyRulez

+0

有人可能會說這在技術上不是一個編程問題,但我不同意,因爲有方法可以對與防火牆合作的系統進行編程。但請注意,插座沒有其他選擇 - 它更多關於*如何使用它們。 – Kylotan

+0

你可能想要做隧道。 – thefourtheye

回答

2

有2點可能的方式:

1)的UPnP/NATPMP/PCP - 這些是由一些(大多數)路由器 更傾向於本地網絡中實現的協議,允許防火牆後面的應用程序在這種情況下互動 你使用上述協議將數據包(來自兩個客戶端)發送到其各自的路由器 ,要求端口打開,然後使用套接字正常通信 。

2)在某些情況下,NAT穿越是可能的 - 閱讀有關STUN服務器和ICE 協議。 - 這是最常見的UDP通信,儘管有時TCP 流量可以在網絡中也走過這樣 - 最常見的技術是 UDP打洞

3)如果沒有這些應用(比如說,在一個對稱NAT龐大的網絡)當您通過您的公開訪問的服務器中繼所有數據時,唯一的方法是 將成爲TURN方法。

P2P和NAT穿越是常見的SIP,VoIP和山洪,因此,免費圖書館 喜歡的Vuze(洪流開源LIB)可以開始挖的好地方... :)

+0

任何機會的任何代碼示例? – PyRulez

+0

我想這可能是一個開始:https://github.com/frostwire/frostwire-android/tree/57ce5c851536cf99070321c8ae10b8c4caec21ee/common/vuze/azureus2/src/com/aelitis/net 但首先谷歌條款和閱讀的維基百科。這些主要是協議,因此,它是2個小時的猴子編碼... – Solo