簡體   English   中英

在python中創建兩台計算機之間的連接

[英]Creating connection between two computers in python

問題:如何創建一個python應用程序,可以通過Internet連接和發送數據包到運行相同應用程序的另一台計算機? 我可以使用現有的代碼/庫嗎?

背景:我對編程很新(HS高級)。 我在python中創建了很多簡單的東西,但我最近決定開始一個更大的項目。 我正在考慮創建一個魔術:聚會助推器選秀模擬器,但我不確定它是否可行,因為我的技能設置所以我在開始之前詢問。 應用程序需要在計算機之間發送有關正在挑選/傳遞哪些卡的數據。

謝謝!

Twisted是一個在MIT下獲得許可的python事件驅動的網絡引擎。 意味着單個機器可以與一個或多個其他機器通信,同時在接收和發送的數據之間執行其他操作,所有這些都是異步的,並且在單個線程/進程中運行。

它支持許多開箱即用的協議,因此您也可以使用現有協議。 這是更好的,因為你從第三方軟件獲得對協議的支持(即使用HTTP進行通信意味着使用HTTP的中間件軟件將兼容:代理等)

如果這就是你想要的,它也可以很容易地創建自己的通信協議。

文檔中充滿了示例。

標准庫包括SocketServer( 此處記錄 ),可能會執行您想要的操作。

但是我想知道更好的解決方案是否可以使用消息隊列。 已經存在許多好的實現,包括Python接口。 我以前用過RabbitMQ 這個想法是計算機都訂閱隊列,並可以發布或監聽事件。

一個開始尋找的好地方是Python標准庫 特別是有幾個部分是相關的:

既然你提到你沒有這方面的經驗,我建議從基於HTTP的實現開始。 HTTP協議非常簡單易用。 此外,也有很好的框架,以支持此操作,如webpy服務器和httplib的來自客戶端的標准庫。

如果您真的想深入了解網絡,那么基於套接字的實現可能具有教育意義。 這將教會您在許多網絡代碼中使用的基礎概念,同時產生類似於文件流的接口。

通過插座進行通信,無論如何。 只是一個問題,你是否使用現有的高級庫,或自己推出。

如果你這樣做是為了學習經驗,可能想要盡可能低級地開始,看看真正的細節。 這意味着您可能希望從使用TCP連接的SocketServer開始(TCP基本上保證數據傳輸; UDP不是)。

Google提供了一些簡單的示例代碼。 設置一個非常容易。 但是你必須定義你的通信協議的所有細節:哪一端發送什么時候,什么,哪一端聽,什么時候,聽眾會期待什么,回復確認收據等等。

另外,查看Pyro (Python遠程對象)。 有關詳細信息,請參閱此答案

Pyro基本上允許您將Python對象實例發布為可以遠程調用的服務。 Pyro可能是實現Python-to-python進程通信的最簡單方法。

同樣值得看看Kamaelia這種事情 - 它的原始用例是網絡系統,並且使構建這樣的東西相對直觀。 一些鏈接: 基本TCP系統概述簡單聊天服務器構建分層協議如何發展新組件的演練 其他極端:P2P無線電系統: 同行

如果它有所不同,我們已經通過參與谷歌夏季代碼連續3年測試了系統是否可供初學者訪問,積極地吸引有經驗和缺乏經驗的開發人員。 所有這些人都設法建立了有用的系統。

從本質上講,如果您曾經使用過unix管道,那么這些想法應該是熟悉的。

警告:我寫了大量的Kamaelia :-)

如果你想學習如何做這些事情,玩幾種不同的方法是有道理的,你一定要看看Twisted(這個問題的標准答案),Pyro和標准庫工具。 每個人都有不同的方法,學習它們肯定會讓你受益匪淺!

但是,像nosklo一樣,我建議不要直接使用套接字庫而是使用庫 - 只是因為讓套接字編程比人們容易意識到的要難得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM