我目前參與了一個項目,我們使用python執行了一些計算機視覺對象識別和分類。有必要使用從Android手機拍攝的照片(照片應該從android自動發送到python)。我其實不知道應該如何將兩個應用程序(android和python)連接在一起。我想過使用TCP服務器,但我是套接字編程的新手,不知道從哪裏開始。python中的TCP/IP套接字編程
任何人都可以提供幫助嗎?
我目前參與了一個項目,我們使用python執行了一些計算機視覺對象識別和分類。有必要使用從Android手機拍攝的照片(照片應該從android自動發送到python)。我其實不知道應該如何將兩個應用程序(android和python)連接在一起。我想過使用TCP服務器,但我是套接字編程的新手,不知道從哪裏開始。python中的TCP/IP套接字編程
任何人都可以提供幫助嗎?
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
希望這有助於爲您提供一些探索方向。
噗的回答是一個很好的概述,但這裏有對各種選項的一些注意事項:
選項1:讓你的Android得到的圖片,做一個HTTP POST運行的框架,如Django的Python應用程序。它應該是Android上的一行代碼,並且Python上只有幾行代碼(圍繞您現有的代碼)。
好處是低級別的「膠水」是爲您編寫的,並且它很容易擴展。缺點是HTTP有一些開銷。
選項2:讓您的Android通過自定義TCP協議與自定義TCP應用程序通信。
這是更多的工作,所以你應該避免它,除非你需要它。它會更有效率和更低的延遲,特別是如果您發送多張照片。如果沒有HTTP標頭,響應也可能更小。
在任一選項中,您不必發送JPEG,就可以發送任何您想要的自定義格式(在Android上的壓縮和文件大小之間進行權衡)。
我想過使用TCP服務器,但我是新來的套接字編程,不知道如何以及從哪裏開始。
從其他人開始的地方開始 - 通過閱讀很多東西並玩很多東西。您可以在網上找到很多關於Python編程的Socket編程介紹。通過教程,並開始修改它們,看看它們是如何工作的。閱讀TCP/IP本身 - 有很多黑暗的角落(內格爾,碎片化,緩慢的啓動),可能會影響您在低級別編寫應用程序的方式。