项目简介
本项目的异步DNS服务器库名为AsyncDNSServer_ESP32_Ethernet,基于Arduino和ESP32开发。该库专为ESP32/S2/S3/C3系列开发板设计,能配合LwIP W5500、W6100或ENC28J60以太网模块使用,可在多连接网络环境中提供稳定可靠的异步DNS服务。
项目的主要特性和功能
- 异步处理能力:采用异步网络编程,可同时处理多个连接,无需在
loop()
函数中频繁检查DNS请求数据包,提升处理效率。 - 多开发板支持:支持ESP32、ESP32_S3、ESP32 - S2、ESP32 - C3等多种开发板,适配LwIP W5500、W6100或ENC28J60以太网模块。
- 可配置性:允许修改与域名关联的TTL(生存时间),并可设置其他域名的返回代码。
- 调试功能:提供基于串口的调试日志,可通过调整日志级别控制调试信息输出量。
安装使用步骤
安装依赖
- 安装
Arduino IDE 1.8.19
及以上版本。 - 安装
ESP32 Core 2.0.6
及以上版本。 - 根据使用的开发板和以太网模块,安装对应的依赖库:
- 对于ESP32:
WebServer_ESP32_W5500 library 1.5.2+
WebServer_ESP32_W6100 library 1.5.2+
WebServer_ESP32_ENC library 1.5.1+
AsyncUDP_ESP32_W5500 library 2.0.0+
AsyncUDP_ESP32_W6100 library 2.0.0+
AsyncUdp_ESP32_ENC library 2.0.0+
- 对于ESP32_S2/S3/C3:
WebServer_ESP32_SC_W5500 library 1.2.1+
WebServer_ESP32_SC_W6100 library 1.2.1+
WebServer_ESP32_SC_ENC library 1.2.0+
AsyncUDP_ESP32_SC_Ethernet library 2.2.0+
- 对于ESP32:
安装本库
- 使用Arduino库管理器:在Arduino IDE中,打开“工具” - “管理库”,搜索
AsyncDNSServer_ESP32_Ethernet
并安装最新版本。 - 手动安装:
- 解压文件到
AsyncDNSServer_ESP32_Ethernet - main
目录。 - 将整个
AsyncDNSServer_ESP32_Ethernet - main
文件夹复制到Arduino库目录,如~/Arduino/libraries/
。
- 解压文件到
- VS Code & PlatformIO:
- 安装VS Code和PlatformIO。
- 使用PlatformIO的库管理器搜索并安装
AsyncDNSServer_ESP32_Ethernet
库。 - 使用示例中的
platformio.ini
文件确保所有依赖库自动安装。
配置使用
- 在代码中包含头文件: ```cpp
include
include
2. 定义相关常量和变量:
cpp
const byte DNS_PORT = 53;
IPAddress apIP;
AsyncDNSServer dnsServer;
AsyncWebServer server(80);
3. 在`setup()`函数中初始化以太网连接和DNS服务器:
cpp
void setup() {
// 以太网连接相关设置
ESP32_W5500_onEvent();
ETH.begin(MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, ETH_SPI_HOST);
// 可设置静态IP
// ETH.config(myIP, myGW, mySN, myDNS);
ESP32_W5500_waitForConnect();
apIP = ETH.localIP();
// DNS服务器设置
dnsServer.setTTL(300);
dnsServer.setErrorReplyCode(AsyncDNSReplyCode::ServerFailure);
dnsServer.start(DNS_PORT, "*", apIP);
}
4. 在`loop()`函数中可留空或添加其他逻辑:
cpp
void loop() {
}
```
调试设置
可通过修改以下宏定义来控制调试日志的输出: ```cpp
define ASYNC_DNS_ESP32_ETHERNET_DEBUG_PORT Serial
// 使用0 - 4的数字,数字越大,调试信息越多,内存使用也越多
define ASYNC_DNS_ESP32_ETHERNET_LOGLEVEL 0
```
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】