2013-06-01 59 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本身 - 有很多黑暗的角落(内格尔,碎片化,缓慢的启动),可能会影响您在低级别编写应用程序的方式。