位置导航: ESP8266库 / DNSServer库 / 本页
说明
processNextRequest函数用于处理DNS请求。当ESP8266模块收到UDP请求后,它将判断该请求是否查找域名映射的IP地址。如果是,则返回IP地址。若有错误则会返回setErrorReplyCode设定好的错误码。
语法
dnsServer.processNextRequest()
参数
无
返回值
无
示例程序
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
示例程序操作说明
当您将以下程序编译并且上传给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响应信息,并且返回给手机浏览器客户端。浏览器于是便显示出以下图片所显示的信息内容。
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 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : dnsServer.processNextRequest()演示 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : 小黑 日期/Date(YYYYMMDD) : 20200323 程序目的/Purpose : 此程序使用DNSServer库来演示持续处理DNS请求服务 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: 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"); // 启动特定域名的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();//处理DNS请求服务 webServer.handleClient(); } |
相关内容
– start – 启动DNS服务
– stop – 停止DNS服务
– setErrorReplyCode – 设置错误响应码
– setTTL – 设置TTL
位置导航: ESP8266库 / DNSServer库 / 本页