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

ESP8266搭建带DHCP功能WiFi热点的编译问题及解决

ESP8266 SoftAP DHCP函数失效问题及解决方法

问题背景

原本可稳定连接安卓设备、Win10台式机及Win11笔记本的ESP8266 WiFi热点初始化代码,在开发新应用时出现编译错误:提示未找到wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)的引用。

排查发现:

  • user_interface.h头文件中,lwip库已移除该DHCP相关函数
  • 找不到ESP8266WiFiAP-DhcpServer.cpp源文件及该函数的实现代码

直接移除该函数调用后,设备无法正常连接热点,DHCP服务工作随机异常。

解决方法

调整初始化流程,改用ESP8266 Arduino库中提供的DHCP服务器实例接口替代原废弃函数,同时优化AP配置顺序。

最终可用初始化代码

Serial.begin(UART_BaudRate);         // 初始化串口
  
wifi_set_phy_mode(PHY_MODE_11G); // 设置WiFi物理模式为11G
// WiFi.mode(WIFI_AP_STA);         // 注释掉AP+STA模式
WiFi.mode(WIFI_AP);               // 设置为纯AP模式
// 设置设备主机名
WiFi.hostname(newHostname.c_str());
// 配置AP的IP地址、网关和子网掩码
WiFi.softAPConfig(AP_IP, gateway, subnet);   
  
// 停止当前DHCP服务
wifi_softap_dhcps_stop();
// 获取SoftAP的DHCP服务器实例
auto& server = WiFi.softAPDhcpServer(); 
// 配置DHCP不提供路由信息
server.setRouter(false); 
// 重新启动DHCP服务
if (wifi_softap_dhcps_start()) {
  Serial.println("DHCP服务启动成功");
};     

// 配置SoftAP使用WPA2 AES加密
struct softap_config config;
wifi_softap_get_config(&config); // 获取当前AP配置
config.authmode = AUTH_WPA2_PSK; // 强制使用WPA2 AES加密模式
if (wifi_softap_set_config(&config)) {
  Serial.println("AP加密配置完成");
};

// 启动SoftAP
if (WiFi.softAP(ssid, pass, chan)) { 
  Serial.println("SoftAP启动成功");
};   
  
// NMEA相关初始化
NMEA_IN_ready = false;         
NMEA_IN = "";
 
// 初始化UDP服务
Udp.begin(Port_NMEA);           
// 初始化TCP服务器
server_TCP.begin(Port_NMEA);    
// 启用TCP无延迟模式
server_TCP.setNoDelay(true);    
  
// 启动DNS服务器,将所有域名解析到AP的IP地址
dnsServer.start(DNS_PORT, "*", AP_IP); 

内容的提问来源于stack exchange,提问作者jptrol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:48:16