我不是这方面的专家,需要你的建议。我在以太网/局域网上有一些设备。我想让这些设备通过 LAN 进行通信,而无需进入它们的网络配置。以下是我的计划,请告诉我是否可以实现:
1) 我在这些设备上安装 TCP/IP 堆栈
2)我给他们他们的主机名,如设备1,设备2等......
3)我将这些设备配置为本地链接网络,以便他们可以配置自己并获取他们的 IP。
4)我使用套接字编程并使用主机名访问每个设备。
请让我知道这是否可以轻松完成,如果我错过了上述几点,请告诉我。提前致谢。
这基本上是一个好方法。
如果您的嵌入式设备具有良好的 IPv6 堆栈,我建议使用它而不是 IPv4。链接本地地址更适用于 IPv6。大多数 IPv4 堆栈都配置为首先尝试从 DHCP 服务器获取地址,如果无法获取地址,则仅回退到链接本地地址。链路本地地址和 DHCP 地址可能是互斥的,因此链路本地地址只有在尝试 DHCP 并超时后才会生效。如果 DHCP 定期重试,链接本地地址甚至可能会中断。虽然设备通常会相互连接并且不会有 DHCP 服务器,但您不想禁用 DHCP,因为设备可能应该如果它们曾经连接到更广泛的网络,则获取 DHCP 地址。另一方面,对于 IPv6,当接口出现时,链路本地地址会立即出现,并在其他 IP 地址(来自 autoconf 或来自 DHCPv6)可能来来去去时持续保持。
单独链接本地地址不会让设备通过主机名相互联系,但 dns-sd (mDNS, zeroconf) 会。如果您使用的是 Linux,那么您可以将 avahi 用作 dns-sd 堆栈。
比使用主机名更好,考虑让设备通过 dns-sd 服务类型相互探测。如果您在设备之间使用自定义协议,请创建一个唯一的服务 tpe 名称,并让设备自己宣传它并使用 dns-sd 进行探测。