位置导航: ESP8266库 / DNSServer库 / 本页
说明
当客户端发送的查询域名不在ESP8266模块建立的DNS服务器检索中,则返回setErrorReplyCode函数设置的错误代码。
语法
dnsServer.setErrorReplyCode(replyCode)
参数
replyCode:此参数为DNS响应错误码。类型为DNSReplyCode。
ESP8266 – DNSServer库默认的DNS响应错误码如下
1 2 3 4 5 6 7 8 9 |
NoError = 0,//DNS查询成功完成 FormError = 1,//DNS查询格式错误 ServerFailure = 2, //服务器无法完成DNS请求 NonExistentDomain = 3,//域名不存在 NotImplemented = 4,//未定义 Refused = 5,//服务器拒绝回答查询 YXDomain = 6,//名称不应该存在,但该名称确实存在 YXRRSet = 7,//资源记录集不存在 NXRRSet = 8//服务器对该区域无权 |
返回值
无
示例程序
示例程序操作说明
当您将以下程序编译并且上传给ESP8266开发板以后,接下来您可以使用手机连接ESP8266开发板所建立的WiFi网络。该WiFi网络名称是DNSServer example(连接此网络无需密码)。
请打开手机的浏览器,并且在浏览器地址栏中输入“www.example.com”。
输入地址后,再按下确认键。浏览器将会打开下图所示的页面。该页面正是由ESP8266开发板所建立的。
接下来,我将对此示例程序的基本工作流程给您做一个简单的介绍。请留意,在以下示例程序的控制下,ESP8266服务器将会扮演两个角色。第一个角色是DNS服务器,也就是本页面所要讲解的重点。第二个是网络服务器,也就是响应客户端的HTTP访问请求。
在以下示例程序中,我们使用了dnsServer.start(DNS_PORT, "www.example.com", apIP)
启动了DNS服务。当我们通过浏览器输入了www.example.com这一网址信息并按下确认键后,浏览器将会向ESP8266所建立的DNS服务器发送DNS服务请求。
ESP8266服务器在收到此请求后,将会通过服务器内的检索信息获取到www.example.com这一网址所对应的IP地址正是ESP8266服务器的IP地址。于是ESP8266DNS服务器将会把这一检索结果响应给浏览器。
浏览器得到了DNS服务器响应,也就是www.example.com网址所对应的IP正是ESP8266服务器的IP,于是浏览器将会再次向ESP8266的IP地址发送HTTP请求。
当ESP8266接收到浏览器客户端的HTTP访问请求后,ESP8266的网页服务器功能将会生成HTTP响应信息,并且返回给手机浏览器客户端。浏览器于是便显示出以下图片所显示的信息内容。
在以下示例程序中:当客户端发送的查询域名不在DNS服务器检索中,则返回以下语句所设置的错误代码。dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure);
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : dnsServer.setErrorReplyCode();演示 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : 小黑 日期/Date(YYYYMMDD) : 20200323 程序目的/Purpose : 此程序使用DNSServer库来演示设置错误响应码 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <DNSServer.h> #include <ESP8266WebServer.h> const byte DNS_PORT = 53;//默认设置端口为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"); // 设置TTL值(单位:秒) dnsServer.setTTL(300); //当客户端发送的查询域名不在DNS服务器检索中,则返回以下语句所设置的错误代码。 dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure); // 启动特定域名的DNS服务器 dnsServer.start(DNS_PORT, "www.example.com", apIP); // 利用简单的HTTP服务器以查看DNS服务器是否正常运行 webServer.onNotFound([]() { String message = "Hello World!\n\n"; message += "URI: "; message += webServer.uri(); webServer.send(200, "text/plain", message); }); webServer.begin(); } void loop() { dnsServer.processNextRequest();//持续监听 webServer.handleClient(); } |
相关内容
– start – 启动DNS服务
– stop – 停止DNS服务
– processNextRequest – 处理DNS请求
– setTTL – 设置TTL
位置导航: ESP8266库 / DNSServer库 / 本页