python中的Tcp / IP套接字编程

时间:2013-06-01 00:15:42

标签: android python sockets tcp

我目前参与了一个项目,我们使用python执行了一些计算机视觉对象识别和分类。有必要使用从Android手机拍摄的照片(照片应该自动从Android发送到python)。我实际上不知道如何将两个应用程序(android和python)连接在一起。我想过使用TCP Server,但我不熟悉socket编程,也不知道如何以及从哪里开始。

任何人都可以提供帮助吗?

2 个答案:

答案 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,碎片,慢启动),当你达到低水平时会影响你编写应用程序的方式。