我正在尋找關於在Python中開發客戶端/服務器服務程序的技術(和庫)的建議。它可以在靜態IP(它是好的),動態IP,在路由器,移動提供商之後運行(所以,它應該在任何可能的地方工作)。端口轉讓不是一種選擇。路由器後面的Python客戶端/服務器
主要問題是連接:
- 發送:從互聯網到電腦的路由器後面的路由器
- 聽電腦的背後
我正在尋找關於在Python中開發客戶端/服務器服務程序的技術(和庫)的建議。它可以在靜態IP(它是好的),動態IP,在路由器,移動提供商之後運行(所以,它應該在任何可能的地方工作)。端口轉讓不是一種選擇。路由器後面的Python客戶端/服務器
主要問題是連接:
你的問題不是小事一樁,但希望這可以幫助你走。 Twisted可能是python中客戶端/服務器代碼的最佳庫。 STUN,也許TURN通常是做這種事情的協議。
有一個python library for STUN,雖然我不能擔保。
謝謝你的建議,STUN和TURN是找到答案的方法。對於我的雅虎問題也有很大的反響,可以從TURN維基頁面訪問。扭曲是很好的框架,但它似乎不支持在NAT後面工作...我不確定完全,但[這裏](http://twistedmatrix.com/pipermail/twisted-python/2009-Octobe/020721 .html)smb回答了這個問題。 – Yury 2012-01-29 18:12:36
STUN有兩個版本:RFC3489,RFC5389,後者是新版本。 TURN是「繼續擴展到NAT的會話穿越實用程序(STUN)」,可以在這裏找到RFC5766。
STUN客戶:(RFC4389)pystun(在python)
TURN客戶端(也支持STUN RFC5389)turn-client(Python和C)現在
pystun爲https://pypi.python.org/pypi/pystun
你可以用pip安裝它: pip install pystun
路由器的存在與否有關?它應該是透明的,並由路由器的IP層處理。將流量路由到網絡中的正確終點是整個路由器的要點... – immortal 2012-01-28 23:04:05
清晰的想法,謝謝。我在這個問題上不流利(這就是爲什麼我問:),但通常你不能從互聯網上訪問路由器(帶有NAT)的計算機。因爲,如果它ping,你只知道由ISP給出的公共IP。如果你只想連接到這臺電腦,那麼你只有公用IP。創建像100.100.100.100/192.168.1.2(公網IP /本地IP)這樣的連接會很棒,但我不確定這通常是可能的。你怎麼看? – Yury 2012-01-29 18:42:08