https://circuits4you.com/2017/12/31/esp8266-mdns/
本教程介紹如何使用ESP8266進行多播DNS?在網絡世界中,很難記住每個網站和計算機的IP地址,解決這個問題域名系統(DNS)用於制作人類可理解的名稱。在ESP8266中使用ESP作為Web服務器時,很難記住ESP8266的IP地址,並且在DHCP模式下很難識別ESP的IP地址。即WiFi路由器為ESP8266分配IP地址。大多數ESP8266應用程序沒有顯示界面,並且不容易訪問以了解其IP地址。為了克服這個問題,使用mDNS。
什么是mDNS?
有關mDNS的更多信息,請閱讀RFC6762
隨着聯網設備變得更小,更便攜和更普遍,使用配置較少的基礎設施進行操作的能力變得越來越重要。特別是,在沒有傳統的托管DNS服務器的情況下查找DNS資源記錄數據類型(包括但不限於主機名)的能力是有用的。
多播DNS(mDNS)提供在沒有任何傳統單播DNS服務器的情況下在本地鏈路上執行類似DNS的操作的能力。此外,多播DNS指定DNS名稱空間的一部分可供本地使用,無需支付任何年費,也無需設置授權或以其他方式配置傳統DNS服務器來回答這些名稱。
多播DNS名稱的主要優點是
- 它們幾乎不需要管理或配置來設置它們,
- 它們在沒有基礎設施時工作,並且
- 它們在基礎設施故障期間工
在ESP8266上使用本地網絡中的mDNS
使用ESP8266的mDNS程序
該程序創建ESP8266 mDNS,名稱為esp8266 MDNS.begin(“esp8266”)
/*
* Circuits4you.com
* mDNS example ESP8266 in Arduino IDE
* After connecting to WiFi router enter esp8266.local in web browser
*/
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
const char* wifiName = "circuits4you.com";
const char* wifiPass = "your_password";
ESP8266WebServer server(80);
//Handles http request
void handleRoot() {
digitalWrite(2, 0); //Blinks on board led on page request
server.send(200, "text/plain", "hello from esp8266!");
digitalWrite(2, 1);
}
// the setup function runs once when you press reset or power the board
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(wifiName);
WiFi.begin(wifiName, wifiPass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //You can get IP address assigned to ESP
if(WiFi.status() == WL_CONNECTED) //If WiFi connected to hot spot then start mDNS
{
if (MDNS.begin("esp8266")) { //Start mDNS with name esp8266
Serial.println("MDNS started");
}
}
server.on("/", handleRoot); //Associate handler function to path
server.begin(); //Start server
Serial.println("HTTP server started");
}
// the loop function runs over and over again forever
void loop() {
server.handleClient();
}
上傳此程序后打開串口監視器,看看一切正常。

然后打開Web瀏覽器並在地址欄中輸入esp8266.local。確保您打開Web瀏覽器的esp和筆記本電腦(不是ANDROID PHONE)使用相同的WiFi網絡。
DNS系統有www.xyzabc.com這樣的名字。但是當你使用mDNS時,本地DNS系統沒有任何DNS服
務器。你必須在那個點(。)local之后輸入域名。恩。esp8266.local
重要說明: Android操作系統不支持mDNS。您必須在手機中使用IP地址。要解決此問題,請在網頁中顯示IP地址。這樣你就可以在筆記本電腦上獲得ESP8266的ip。
