繁体   English   中英

Python Web服务与套接字编程客户端/服务器设计

[英]Python Web Service vs Socket programming Client/Server Design

我需要一些帮助,我正在客户端服务器软件的早期设计阶段,我不知道这两个选项(Web服务或套接字编程)中哪一个最适合我的软件。

所有编程都在python中进行。

布局: 在此处输入图片说明

  1. PC将需要运行服务器服务-该服务器将从本地计算机获取命令,并将其发送到MiniPC。

  2. MiniPC将需要运行客户端服务-当它识别命令(方法)时,他将转到硬件(通过串行连接,USB .....)进行操作,然后返回结果到miniPC。

  3. MiniPC获得硬件结果,并将其发送到日志服务器和主PC

笔记:

  • PC可以控制多个MiniPC。
  • 一个硬件响应中的数据量可以高达10Kb。
  • 从PC到MiniPC的命令很小(字符串)
  • 记录数据最高可达10Kb。

Questios:

  1. 您对协议Web(http)或Socket编程有何建议?
  2. 您对设计有什么建议吗?

您应该能够为此使用套接字编程。 在PC上设置套接字服务器,在MiniPC设备上设置客户端。 客户端将等待PC的输入(从套接字读取),然后将其从硬件获得的输出发送回去。 在设计方面,我看到两件事。 首先,套接字服务器可以运行select()处理多个客户端。 其次,您可能希望将MiniPC套接字的SO_SNDBUF套接字选项和PC上的服务器的SO_RCVBUF增大到10Kb的倍数。 您考虑使用Web的观点是什么?

我已经在BeagleBone上使用基于ARM的控制器完成了一个类似的项目:请随时通过评论问我问题。

首先,从技术上讲,您的BeagleBones是服务器-因为它们运行的​​是事件触发的守护程序服务-而PC是客户端。 (但这只是吊坠而已)

其次,由于嵌入式设备的限制,我无法在服务器上运行高效的Web服务器,因此选择很简单。 我建议您坚持使用套接字编程,但是要添加网络服务,例如DCHP,对TCP / UDP / UDP多播的支持,ping,回显,...

最后,关于性能的重要问题如下: 通信的物理层是什么? 以太网? 无线上网 ? 蓝牙/ ZigBee? I2C / CAN / ...?

我想这是以太网:由于CSMA,IEEE 802.11协议无法很好地扩展(请参阅此处http://fr.wikipedia.org/wiki/CSMA )。 如果要具有多个设备(数十个),则需要交换机/路由器来封装子网,以避免网络拥塞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM