我目前参与了一个项目,我们使用python执行了一些计算机视觉对象识别和分类。有必要使用从Android手机拍摄的照片(照片应该自动从Android发送到python)。我实际上不知道如何将两个应用程序(android和python)连接在一起。我想过使用TCP Server,但我不熟悉socket编程,也不知道如何以及从哪里开始。
任何人都可以提供帮助吗?
答案 0 :(得分: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方面,你有多种选择,但我会考虑的主要选择:
如果你想要Asynch,可以扭曲(或者说是龙卷风)。
http://twistedmatrix.com/trac/wiki/WebDevelopmentWithTwisted
http://zenmachine.wordpress.com/web-services-and-twisted/
同步烧瓶。
http://flask-restful.readthedocs.org/en/latest/quickstart.html
也许是Nginx / Apache + Django
http://django-rest-framework.org/
关于Python和REST的帖子
Recommendations of Python REST (web services) framework?
如果你想在套接字级别实现这一点,这本书将是一个很好的资源:
http://www.amazon.com/Foundations-Python-Network-Programming-Goerzen/dp/1590593715
希望这有助于为您提供一些探索方向。
答案 1 :(得分:0)
poof的答案是一个很好的概述,但这里有一些关于各种选项的注释:
选项1:让你的Android获得图片并对运行Django等框架的Python应用程序进行HTTP POST。它应该是Android上的一行代码,而Python上只有几行代码(围绕现有代码)。
优点是低级“胶水”是为您编写的,它很容易扩展。缺点是HTTP有一些开销。
选项2:让您的Android与自定义TCP应用程序进行自定义TCP协议。
这是更多的工作,所以你应该避免它,除非你需要它。它会更高效,延迟更低,特别是如果您要发送多张图片。没有HTTP标头,响应也可以小得多。
在任一选项中,您不必发送JPEG,您可以发送任何您想要的自定义格式(在Android上压缩和文件大小之间需要权衡)。
我想过使用TCP Server,但我不熟悉socket编程,也不知道如何以及从哪里开始。
从其他人开始的地方开始 - 通过阅读和玩很多东西。您可以在Web上找到大量有关Python中Socket编程的介绍。通过教程,并开始修改它们,看看它们是如何工作的。阅读TCP / IP本身 - 有很多黑暗的角落(Nagel,碎片,慢启动),当你达到低水平时会影响你编写应用程序的方式。