2013-08-29 103 views
0

我需要一些帮助,我在客户端服务器软件的早期设计阶段,我不知道哪两个选项(Web服务或套接字编程)是正确的一个用于我的软件。Python Web服务与套接字编程客户端/服务器设计

所有的编程都是用python编写的。

布局: enter image description here

  1. PC将需要运行一个服务器服务 - 该服务器从本地计算机得到命令,将它们发送到的MiniPC。

  2. MiniPC将需要运行一个客户端服务 - 当它识别一个命令(方法)时,他将进入硬件(通过串行连接,USB ......),做一些事情并返回miniPC结果。

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

注:

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

Questios:

  1. 是你recomendation的协议的Web(HTTP)或Socket编程什么?
  2. 您对设计有任何建议吗?
+0

这个问题在programmers.stackexchange.com上会更合适。堆栈溢出是用于编程的问题 - 这更多的是设计问题,因此是脱离主题。 – xaxxon

回答

0

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

+0

我认为Web更容易开发,所以这就是为什么我想使用它,但正如我从响应中看到的,它可能很难在有限的minipc上运行 –

0

我在基于ARM的控制器上做了一个类似的项目,而不是在BeagleBone上:请随时通过注释问我问题。

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

其次,由于嵌入式设备的限制,我无法在服务器上运行高效的Web服务器,所以选择很简单。我建议你坚持套接字编程,但增加网络服务,如DCHP,支持TCP/UDP/UDP组播,ping, : 通信的物理层是什么? 以太网?无线上网 ?蓝牙/ ZigBee? I2C/CAN/...?

我会猜测它是以太网:由于CSMA(见http://fr.wikipedia.org/wiki/CSMA),IEEE 802.11协议不能很好地扩展。如果你想有几台设备(几十台),你需要交换机/路由器来封装子网络,以避免网络拥塞。

+0

感谢您的帮助!物理层是以太网。 –

+0

你有什么建议从哪里入手?也许有一些基本的开源可以使用并节省开发时间? –

+0

这个问题应该被标记并关闭并移动到programmers.stackexchange.com。请不要回答,请将人员指向正确的地方 – xaxxon