3

我不是这方面的专家,需要你的建议。我在以太网/局域网上有一些设备。我想让这些设备通过 LAN 进行通信,而无需进入它们的网络配置。以下是我的计划,请告诉我是否可以实现:

1) 我在这些设备上安装 TCP/IP 堆栈

2)我给他们他们的主机名,如设备1,设备2等......

3)我将这些设备配置为本地链接网络,以便他们可以配置自己并获取他们的 IP。

4)我使用套接字编程并使用主机名访问每个设备。

请让我知道这是否可以轻松完成,如果我错过了上述几点,请告诉我。提前致谢。

4

1 回答 1

2

这基本上是一个好方法。

如果您的嵌入式设备具有良好的 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 进行探测。

于 2012-05-15T21:41:54.523 回答