我不是这方面的专家,需要你的建议。我在以太网/局域网上有一些设备。我想让这些设备通过LAN进行通信,而无需进入其网络配置。以下是我的计划,如果可以实现,请告诉我:
1)我在这些设备上安装TCP / IP堆栈
2)我给他们的主机名如device1,device 2等....
3)我将这些设备配置为本地链路网络,以便他们可以自行配置并获取其IP。
4)我使用套接字编程并使用主机名访问每个设备。
请告诉我这是否可以毫不费力地完成,如果我错过了上述各点,请告诉我。 提前谢谢。
答案 0 :(得分: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进行探测。