gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:56:17 25 4
gpt4 key购买 nike

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

ESP 模块是否可以向整个网络发送带有特定 header 的 HTTP 广播?然后,识别头部的服务器会响应,从而自动检测到它的 IP 地址?如果不使用 HTTP,是否可以使用 UDP 实现?客户端和服务器是否有一种通信模式可以相互发现?

到目前为止,我发明的唯一解决方案(或者更确切地说是变通方法)是遍历本地子网(通常为 192.168.1.1-192.168.1.254)的整个地址范围并尝试启动通信。但是,这非常慢(如果服务器的 IP 地址在范围的上半部分)。另外,它不能在 10.0.0.0 网络上运行(更不用说纯 IPv6 网络了……)。

最佳答案

如果您希望您的 esp 在任何专用网络中找到一个专用服务器,而不需要 DNS 和其他设置,这可能是一个答案:

  1. 在服务器端,实现 udp 广播。这会在某些时间间隔(例如 2 秒)之间广播自身的连接信息。这就像 wifi 信标(或蓝牙广告)。
  2. 在 esp 端,esp 必须知道 ssid。然后连接到网络。开始监听广播端口以获取特定消息。
  3. 收到消息后,解析并验证(authenticate等),然后从消息中获取参数,显示服务器。
  4. 最后使用参数与服务器通信,关闭广播监听。

关于c++ - 使用 ESP8266 自动检测本地服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com