You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STA连接新网络时如何避免HTTP连接重置(错误码113)

STA连接新网络时如何避免HTTP连接重置(错误码113)

兄弟,我太懂你这个问题了!之前做智能插座的WiFi配置时,一模一样碰到过这个113错误——就是设备刚连上STA新网络,之前AP模式下的HTTP连接直接重置,客户端啥结果都收不到。折腾了好几天,总结了几个实用的解决办法,你可以试试:

先搞懂核心原因

这个113错误对应的是ENETUNREACH,说白了就是网络不可达。当你的设备成功连上STA网络后,原来AP模式的网络接口配置(比如你设的6.6.6.6)会被修改,或者系统路由表直接切换到STA的网络链路,导致之前和客户端建立的HTTP连接的通信链路直接断了,这时候再往这个连接发数据,自然就会报连接重置的错误。

具体解决办法

1. 先发完响应,再切STA连接

最直接的思路:别着急切换网络!收到客户端的WiFi配置请求后,先把“正在连接WiFi,请稍候”这类响应完整发给客户端,等确认响应100%发送完毕后,再启动STA连接流程。

举个实际代码的思路(以常见的智能设备开发框架为例,你可以对应自己的平台调整):

// 处理客户端WiFi配置请求的HTTP回调
esp_err_t handle_wifi_setup_req(httpd_req_t *req) {
    // 先给客户端返回明确的响应,告诉它我们开始处理了
    const char* resp_content = "{"status":"processing","msg":"正在连接目标WiFi"}";
    httpd_resp_set_type(req, "application/json");
    // 发送响应,确保发送完成
    esp_err_t send_ret = httpd_resp_send(req, resp_content, strlen(resp_content));
    if (send_ret == ESP_OK) {
        // 延迟1秒,给网络缓冲留够时间,确保客户端收到响应
        vTaskDelay(pdMS_TO_TICKS(1000));
        // 再启动STA连接流程
        wifi_sta_connect();
    }
    return send_ret;
}

2. 开启AP+STA共存,延迟关闭AP

很多WiFi芯片都支持AP和STA同时工作的共存模式。你可以在STA成功连接新网络后,不要立刻关闭AP接口,留个3-5秒的缓冲时间,等客户端收到最终的连接结果响应后,再关闭AP或者切换AP的配置。

注意:共存时要确保AP和STA的IP段不冲突,比如你的AP用6.6.6.6,STA用DHCP自动获取的IP,短时间共存不会有路由问题,足够完成响应发送了。

3. 用分段响应先反馈,再发最终结果

如果需要给客户端返回连接成功/失败的最终状态,可以用HTTP的分段响应。先给客户端发一个“正在连接”的分段,等STA连接成功后,再发最终的“连接成功”分段,最后结束响应。不过这个方法要确保在STA切换网络前,分段响应的通道还没断,适合响应发送快的场景。

调试小技巧

可以在串口里打印切换前后的网络状态:

  • 切换前打印AP的IP、接口状态
  • 切换中打印STA连接进度、IP获取情况
  • 切换后打印路由表、当前活跃的网络接口
    这样能快速定位是不是AP接口被过早关闭或者IP被释放导致的连接断了。

备注:内容来源于stack exchange,提问作者Ethan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:23:10