使用Arduino开发ESP32(10):DNSServer使用演示与说明

目的

前面讲WebServer的时候都是通过ip地址去访问的,如果想像一般上网那样输入域名(www.baidu.comwww.taobao.com等)访问的话就需要用到DNSServer了。本文对
Arduino core for the ESP32中DNSServer使用进行简单介绍。

使用DNSServer必须使设备处于AP模式下,在非AP模式下想实现同样功能的话请参考mDNS
mDNS可以在非AP模式下使用但也有局限,局域网中其它设备也必须开启mDNS服务互相间才能通过域名访问。

使用演示

本文中各种例程测试中出现中文可能在有些浏览器中会出现乱码(我这里用的是傲游浏览器ao),这是由于编码格式引起的。正式使用如果是在浏览器中访问text/html类型的网页文件,可以在网页文件的head标签中加入<meta charset=“utf-8”>字段,可以保证在浏览器端中文正常显示。

DNSServer使用步骤如下:

  • 引入相应库#include <DNSServer.h>
  • 声明DNSServer对象;
  • 使用start()方法启动DNS服务器;
  • 使用processNextRequest()方法处理来自客户端的请求;
#include <WiFi.h>
#include <DNSServer.h> //引入相应库
#include <WebServer.h>

IPAddress local_IP(192, 168, 4, 1); //IP地址
IPAddress gateway(192, 168, 4, 1);  //网关地址
IPAddress subnet(255, 255, 255, 0); //子网掩码

const byte DNS_PORT = 53; //DNS服务端口号,一般为53

DNSServer dnsserver; //声明DNSServer对象
WebServer webserver(80);

void handleRoot() //回调函数
{
  webserver.send(200, "text/plain", "通过域名访问的根页面");
}

void handleP1() //回调函数
{
  webserver.send(200, "text/plain", "通过域名访问的p1页面");
}

void setup()
{
  WiFi.mode(WIFI_AP); //设置为AP模式
  WiFi.softAPConfig(local_IP, gateway, subnet);
  WiFi.softAP("DNSServer example");

  webserver.on("/", handleRoot);
  webserver.on("/p1", handleP1);

  dnsserver.start(DNS_PORT, "example.com", local_IP); //启动DNS服务,example.com即为注册的域名
  webserver.begin();
}

void loop()
{
  dnsserver.processNextRequest(); //处理来自客户端的请求
  webserver.handleClient();
}

在这里插入图片描述

常用方法

  • void processNextRequest()
    处理来自客户端的请求;
  • bool start(const uint16_t &port, const String &domainName, const IPAddress &resolvedIP);
    启动DNSServer,分别需要填入端口号、域名、IP,域名可以填写 * 表示所有域名都会被跳转至这里;
  • void stop()
    停止DNSServer;

总结

DNSServer相对比较简单,这里也没其它更多可以说的了,更多内容可以参考如下:
https://github.com/espressif/arduino-esp32/tree/master/libraries/DNSServer

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值