TCP 服务器客户端或客户端服务器

TCP server client or client server

我很纳闷...

我的项目是一台连接到隔离网络中的多个微控制器板的 PC。目前为止都是UDP协议,比较好对付,没有什么特别的client/server,但是有很明显的缺点,一忙就丢消息

微控制器有固定的 IP 地址(由 dip 开关设置),PC SW 有一个列表,当前向它们中的每一个发送 UDP 消息,它们回复它们来自的地址(即PC)状态为 and/or 数据。

我现在的问题是,我切换到 TCP 而不是 UDP,PC 应该是具有许多客户端(可以是 1 - 50 之间的任何值)的监听服务器,还是微控制器应该是 PC 可以连接的监听服务器作为客户?注意:控制器有 fixed/known 个地址 - PC 没有。

另一个问题是重新连接。微控制器是外部的,可能会失去连接、重置或以其他方式需要重新连接。

谢谢....

should the PC be the listening server with many clients (could be anything from 1 - 50), or should the micro controllers be listening servers the PC can connect to as client?

这是一个基本的设计问题,我们无法为您解答。很可能,任意设备连接到中央服务器更实用,但这不是给定的。

controllers have fixed/known addresses - the PC does not.

这可能会扭转之前的问题。

The micro-controllers are external and may lose connection, reset or otherwise need to connect again.

这是您需要在设计中加入的内容 - 让 TCP 连接超时并重新连接。通常,finite-state 机器在这里很有用。您还应该考虑是否使用类似于 UDP 的 one-shot connect-transmit-disconnect(更易于实现)或具有多个数据传输的更长的 TCP 会话(更高效)。