零知WIFI教程 - DNS服务 域名解析 示例应用

DNS-域名解析,简单来讲就是主机IP地址和域名的对应,数字表示的IP地址不好记忆,用字母标识的域名就很友好了,使我们很方面的访问到某个站点。比如我们要访问零知实验室官网,我们可以直接访问IP:120.24.241.163 ,也可以直接访问: www.lingzhilab.com ,但是后者更方便;下面我们在零知ESP8266开发板上进行DNS服务的实验。

一、软件和硬件

硬件我们本次使用零知-ESP8266;

软件使用零知开发工具,自带示例:

二、方法步骤

(1)先在零知开发工具中打开DNSServer示例,或者复制下面的代码到零知开发工具中:


							
	/**********************************************************
	*    文件: x.ino      by 零知实验室([url]www.lingzhilab.com[/url])
	*    -^^- 零知开源,让电子制作变得更简单! -^^-
	*    时间: 2019/05/28 12:22
	*    说明: 
	************************************************************/
	  
	#include <ESP8266WiFi.h>
	#include <DNSServer.h>
	#include <ESP8266WebServer.h>
	  
	const byte DNS_PORT = 53;
	IPAddress apIP(192, 168, 1, 1);
	DNSServer dnsServer;
	ESP8266WebServer webServer(80);
	  
	void setup() {
	  WiFi.mode(WIFI_AP);
	  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
	  WiFi.softAP("DNSServer example");
	  
	  // modify TTL associated  with the domain name (in seconds)
	  // default is 60 seconds
	  dnsServer.setTTL(300);
	  // set which return code will be used for all other domains (e.g. sending
	  // ServerFailure instead of NonExistentDomain will reduce number of queries
	  // sent by clients)
	  // default is DNSReplyCode::NonExistentDomain
	  dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure);
	  
	  // start DNS server for a specific domain name
	  dnsServer.start(DNS_PORT, "www.example.com", apIP);
	  
	  // simple HTTP server to see that DNS server is working
	  webServer.onNotFound([]() {
	    String message = "welcome to lz laboratory!\n\n";
	    message += "URI: ";
	    message += webServer.uri();
	  
	    webServer.send(200, "text/plain", message);
	  });
	  webServer.begin();
	}
	  
	void loop() {
	  dnsServer.processNextRequest();
	  webServer.handleClient();
	}
							
						

(2)验证后上传代码到零知-ESP8266开发板。

(3)然后我们在电脑上无线网络就可以看到如下热点:

(4)我们现在连接到这个热点,然后在浏览器里打开我们设置的域名:www.example.com, 可以看到如下结果:

这个页面和我们访问 192.168.1.1 这个IP是一样的: