将应用程序连接到设备的正确方法是什么?目前,我有一个控制电力的树莓派 3 和一个我创建的 iPhone 应用程序。每次应用程序进入前台时,它都会发送一条 UDP 广播消息,当应用程序收到来自树莓派的响应时,它会使用该 IP 地址(在 IP 标头中)来使用我在集线器中创建的 Web 服务。此 UDP 进程在您运行应用程序时一直执行。这是物联网设备通常做的吗?我认为树莓派 IP 迟早会改变。
我的一个同事告诉我另一种方式:在我第一次获得IP地址后,不是每次应用程序运行时都使用UDP广播消息,而是使用ICMP ping之前保存的IP地址,看看它是否有响应。在这种情况下,我使用具有该 IP 地址的 Web 服务,否则,再次使用 UPD 广播消息。
我不明白这一点。基本上是因为系统使用ICMP速度并不快。(UDP 请求或多或少与 ICMP 请求一样快)。此外,也许,另一台设备现在开始使用该 IP 地址(如智能电视或智能插头),因此,它不会回复应用程序发送的网络请求。在这种情况下,应用程序无法恢复,因为它认为它已经连接到正确的设备。据我了解,ICMP 是一种用于诊断的协议,而不是用于设备发现的协议。
你怎么看?Alexa、Philips Hue、Smart plugs 等设备使用什么过程来解决应用程序发现设备的问题?似乎飞利浦 HUE 正在使用 SSDP,它在后台使用 UDP 广播消息。每次运行应用程序时都会使用它来发现 IP 地址吗?(我稍后会用wireshark检查这个)
感谢您的建议。