2013-06-01 57 views
0

我目前參與了一個項目,我們使用python執行了一些計算機視覺對象識別和分類。有必要使用從Android手機拍攝的照片(照片應該從android自動發送到python)。我其實不知道應該如何將兩個應用程序(android和python)連接在一起。我想過使用TCP服務器,但我是套接字編程的新手,不知道從哪裏開始。python中的TCP/IP套接字編程

任何人都可以提供幫助嗎?

回答

0

Android爲您提供了通過HTTP進行連接的選項。

http://developer.android.com/guide/topics/connectivity/index.html

所以我可能會用一個REST類型的實現去

https://en.wikipedia.org/wiki/Representational_state_transfer

http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

下面是Android的教程和REST

http://www.majidkhosravi.com/android-rest/

但你正在處理圖片。這是一個談論這個的SO。

POSTing image from Android to WCF Rest Service

在你有多種選擇Python端,但是最主要的,我會考慮:

雙絞線(或者龍捲風)如果你想非同步。

http://twistedmatrix.com/trac/wiki/WebDevelopmentWithTwisted

http://zenmachine.wordpress.com/web-services-and-twisted/

燒瓶同步。

http://flask-restful.readthedocs.org/en/latest/quickstart.html

也許Nginx的/阿帕奇+ Django的

http://django-rest-framework.org/

SO張貼關於Python和REST

Recommendations of Python REST (web services) framework?

如果你想在套接字級別來實現這一點,這本書將是一個很好的資源:

http://www.amazon.com/Foundations-Python-Network-Programming-Goerzen/dp/1590593715

希望這有助於爲您提供一些探索方向。

0

噗的回答是一個很好的概述,但這裏有對各種選項的一些注意事項:

選項1:讓你的Android得到的圖片,做一個HTTP POST運行的框架,如Django的Python應用程序。它應該是Android上的一行代碼,並且Python上只有幾行代碼(圍繞您現有的代碼)。

好處是低級別的「膠水」是爲您編寫的,並且它很容易擴展。缺點是HTTP有一些開銷。

選項2:讓您的Android通過自定義TCP協議與自定義TCP應用程序通信。

這是更多的工作,所以你應該避免它,除非你需要它。它會更有效率和更低的延遲,特別是如果您發送多張照片。如果沒有HTTP標頭,響應也可能更小。

在任一選項中,您不必發送JPEG,就可以發送任何您想要的自定義格式(在Android上的壓縮和文件大小之間進行權衡)。

我想過使用TCP服務器,但我是新來的套接字編程,不知道如何以及從哪裏開始。

從其他人開始的地方開始 - 通過閱讀很多東西並玩很多東西。您可以在網上找到很多關於Python編程的Socket編程介紹。通過教程,並開始修改它們,看看它們是如何工作的。閱讀TCP/IP本身 - 有很多黑暗的角落(內格爾,碎片化,緩慢的啓動),可能會影響您在低級別編寫應用程序的方式。