2012-01-28 143 views
3

我正在尋找關於在Python中開發客戶端/服務器服務程序的技術(和庫)的建議。它可以在靜態IP(它是好的),動態IP,在路由器,移動提供商之後運行(所以,它應該在任何可能的地方工作)。端口轉讓不是一種選擇。路由器後面的Python客戶端/服務器

主要問題是連接:

  • 發送:從互聯網到電腦的路由器後面的路由器
  • 聽電腦的背後
+3

路由器的存在與否有關?它應該是透明的,並由路由器的IP層處理。將流量路由到網絡中的正確終點是整個路由器的要點... – immortal 2012-01-28 23:04:05

+0

清晰的想法,謝謝。我在這個問題上不流利(這就是爲什麼我問:),但通常你不能從互聯網上訪問路由器(帶有NAT)的計算機。因爲,如果它ping,你只知道由ISP給出的公共IP。如果你只想連接到這臺電腦,那麼你只有公用IP。創建像100.100.100.100/192.168.1.2(公網IP /本地IP)這樣的連接會很棒,但我不確定這通常是可能的。你怎麼看? – Yury 2012-01-29 18:42:08

回答

3

你的問題不是小事一樁,但希望這可以幫助你走。 Twisted可能是python中客戶端/服務器代碼的最佳庫。 STUN,也許TURN通常是做這種事情的協議。

有一個python library for STUN,雖然我不能擔保。

+0

謝謝你的建議,STUN和TURN是找到答案的方法。對於我的雅虎問題也有很大的反響,可以從TURN維基頁面訪問。扭曲是很好的框架,但它似乎不支持在NAT後面工作...我不確定完全,但[這裏](http://twistedmatrix.com/pipermail/twisted-python/2009-Octobe/020721 .html)smb回答了這個問題。 – Yury 2012-01-29 18:12:36

1

STUN有兩個版本:RFC3489,RFC5389,後者是新版本。 TURN是「繼續擴展到NAT的會話穿越實用程序(STUN)」,可以在這裏找到RFC5766

STUN客戶:(RFC4389)pystun(在python)

TURN客戶端(也支持STUN RFC5389)turn-client(Python和C)現在