ESP8266是怎么实现断网重连?

我用stm32f429单片机初始化ESP8266后就能连接上热点,连上后,我突然关掉热点再打开,ESP8266就不能连了,只能按复位重新初始化,如果把初始化加入主循环占用太多时间。有没有一个返还信号,当断网时,ESP8266通过串口向单片机发送一个指令,主程序再写if语句判断已经断网了再进行重新初始化联网。

如果这个回答对你有一点帮助,请帮忙好评点赞收藏。
ESP8266可以通过发送AT指令或者其他自定义指令来告知单片机当前网络状态。你可以在主程序中轮询串口接收缓存区,判断是否收到了指定的指令,如果收到了,就重新初始化并连接WiFi网络。这种方法可以避免主循环过于占用时间,同时也可以保证ESP8266能够及时响应网络状态变化。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/385033
  • 除此之外, 这篇博客: 使用esp8266板子进行钓鱼攻击中的 本文只做技术交流,勿用作非法破坏,违者必究,严格遵守网络安全法,维护良好的网络环境,时刻做到心中有法,有法必依,如有任何不当,请联系管理员进行删除! 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    使用esp8266板子进行钓鱼攻击

    先来准备一个esp8266的板子  然后烧录一个钓鱼的固件进去

    打开烧录工具   

    打开烧录软件  将esp8266的板子连接电脑会多出个com的串口来 选择esp8266板子的串口

    点击config  点击设置的图标按钮

    选择这个钓鱼的固件  

    点击flash 开始烧录

    等待烧录完成 就长按板子的rst 重启键  等待他闪动  松手  然后板子上面的灯就会一直亮着  证明 他已经开始工作了

    该固件 是查找信号最强的wifi进行钓鱼攻击

    钓鱼的流程是   截取认证  伪造一个双胞胎wifi 把原来的wifi 挤掉  然后连接上伪造的WiFi  连接上伪造的wifi 会跳转到一个钓鱼页面  这时候我们就可以监控  获取密码

    现在来演示一下

    插上esp8266  等待开始工作    

    打开xcom这个工具 对串口流量进行监控

    选择串口为 esp8226板子的串口  频率要和板子的频率一样  不然会乱码

    选择155200频率   然后

    现在我们已经监听上了

    手机现在已经连上了伪造的wifi  打开页面会发现 跳转到了一个钓鱼页面

    我这里输入一个12345

    输入提交完后 板子会停止运行  可以看到 板子上面的灯不亮了  接下来来查看他的密码

    回到xcom

    转载请注明:

    Adminxe's Blog » 使用esp8266板子进行钓鱼攻击
  • 以下回答来自chatgpt:

    由于问题的描述中没有具体的代码和实现细节,以下是一个假设的问题解决方案:

    1. 首先,使用串口连接ESP8266和单片机,确保单片机能够接收到ESP8266发送的消息。 可以使用以下代码实现,其中serial为串口对象:
    void setup() {
      serial.begin(9600);  // 串口初始化
    }
    
    void loop() {
      while (serial.available()) {  // 如果串口接收到数据
        char received = serial.read();  // 读取数据
        // 进行处理
      }
      // 其他代码
    }
    
    1. 在ESP8266断网后,发送一个特定的信号给单片机,告知它断网了。 可以使用以下代码实现,其中serial为ESP8266所连接的串口对象:
    void loop() {
      if (WiFi.status() != WL_CONNECTED) {  // 判断是否连接上WiFi
        serial.println("disconnect");  // 发送断网信号
        delay(5000);  // 延时等待重连
        WiFi.reconnect();  // 尝试重新联网
      }
      // 其他代码
    }
    
    1. 单片机接收到断网信号后,执行重新初始化ESP8266联网的代码。 可以在上述代码中加入以下处理代码:
    void loop() {
      if (serial.available()) {  // 判断是否接收到ESP8266的消息
        String message = serial.readStringUntil('\n');  // 读取消息
        if (message == "disconnect") {  // 判断是否为断网信号
          // 重新初始化ESP8266联网,具体代码根据实际情况进行编写
        }
      }
      // 其他代码
    }
    

    需要注意的是,在使用串口进行通信时,需要确保ESP8266和单片机的串口参数(包括波特率、数据位、停止位、校验位等)相同。同时,为了避免消息丢失和粘包等问题,可以在消息中添加特定的结束符,例如上述代码中的'\n'字符。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^