从零开始的ESP8266探索(10)-DNSServer使用介绍

目的

前面几篇文章中都是通过IP地址访问ESP8266,但如果我们不想记IP地址,想要通过网址访问ESP8266就需要用到DNS服务了。
Arduino for esp8266中有两个DNS服务器相关的库:

  • DNSServer:https://github.com/esp8266/Arduino/tree/master/libraries/DNSServer
    这个库就是本文将用到的建立DNS服务的方式,使用该库时ESP8266必须工作在AP模式下;
  • ESP8266mDNS:https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS
    这个库是mDNS库,使用这个库的时候ESP8266可以在AP模式或是以STA模式接入局域网。局域网中的其他开启mDNS服务的设备就可以通过网址访问ESP8266了;

使用介绍

DNSServer库使用步骤如下:

  1. 引入相应的库#include <DNSServer.h>;
  2. 建立全局的DNS服务器DNSServer dnsServer;;
  3. setup()中初始化DNSServerdnsServer.start(PORT, URL, IP);;
  4. 在loop()中监听客户请求并处理dnsServer.processNextRequest();;

最基本的应用可以参考官方示例DNSServer
keywords.txt中可以看到更多方法,具体的使用可以参考源码或是官方例程。

使用示例

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

DNSServer库使用就如上文描述,下面直接上代码:

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.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; 
ESP8266WebServer webServer(80);

void handleRoot() {
  webServer.send(200, "text/plain", "这是主页");
}

void handleNext() {
  webServer.send(200, "text/plain", "这是另一个页面");
}

void setup() {
  //初始化网络
  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(local_IP, gateway, subnet);
  WiFi.softAP("DNSServer example");

  //初始化DNSServer
  dnsServer.start(DNS_PORT, "www.example.com", local_IP);

  //初始化WebServer
  webServer.on("/", handleRoot);
  webServer.on("/next", handleNext);
  webServer.begin();
}

void loop() {
  //监听客户请求并处理
  dnsServer.processNextRequest();
  webServer.handleClient();
}

在这里插入图片描述

总结

DNSServer的基本使用就是这样了,比较简单,但可以在一定程度上提升用户的使用体验。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Naisu Xu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值