从零开始的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 ;
  2. 建立全局的DNS服务器DNSServer dnsServer;;
  3. setup()中初始化DNSServerdnsServer.start(PORT, URL, IP);;
  4. 在loop()中监听客户请求并处理dnsServer.processNextRequest();;

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

使用示例

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

#include 
#include 
#include 

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();
}

从零开始的ESP8266探索(10)-DNSServer使用介绍_第1张图片

总结

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

你可能感兴趣的:(ESP8266相关,Arudino,esp8266)