使用ESP8266自动检测本地服务器

我有一个 ESP8266 模块(特别是 Cactus Micro r2),它能够连接到本地网络,然后通过 HTTP 协议与我的本地服务器通信。但是,我必须提供网络 SSID、密码和我的服务器的 IP 地址。

ESP 模块是否可以向整个网络发送带有特定标头的 HTTP 广播?然后,服务器认识标头后将作出响应,以便其 IP 地址可以自动检测到?如果 HTTP 无法实现,是否可以使用 UDP?并且,客户端和服务器有什么通信模式来发现彼此?

目前我想到的唯一解决方案(或者说是一种变通方法)是遍历本地子网的整个地址范围(通常为 192.168.1.1-192.168.1.254),并尝试发起通信。但是,这非常缓慢(如果服务器的 IP 地址在范围的后半部分)。此外,它在 10.0.0.0 网络上不起作用(更不用说纯 IPv6 网络了...)。

点赞
用户745049
用户745049

如果你想让你的 ESP 在任何私人网络中找到一个 **专用服务器**,而不需要 DNS 和其他设置,那么这可能是一个解决方案:

  1. 在服务器端,实现一个 UDP 广播。这个广播会在一定的时间间隔(例如2秒)之间将其连接信息广播出去。这类似于 WiFi 的信标广播(或蓝牙广告)。
  2. 在 ESP 侧,ESP 必须知道 SSID。然后连接到网络。开始监听特定的广播端口以获取一个 特定 的消息。
  3. 收到消息后,将其解析并验证(身份验证等),然后从消息中获取显示服务器的参数。
  4. 最后使用这些参数与服务器通信,并关闭广播监听器。
2015-12-07 10:31:51