Setting up mDNS on an ESP32
Using mDNS (Multicast DNS) allows devices on a local network to resolve hostnames without the need for a central DNS server. This is particularly useful in scenarios where devices frequently join and leave the network, such as in IoT applications.
#include <WiFi.h>
#include <WebServer.h>
#include <ESPmDNS.h>
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
const char* mdnsName = "myesp32";
WebServer server(80);
void handleRoot() {
String html = "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
html += "<link rel=\"icon\" href=\"data:,\">";
html += "<style>";
html += "body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: white; color: #333; margin: 20px; }";
html += "h1 { color: #4a5568; font-weight: 300; }";
html += "</style></head>";
html += "<body>";
html += "<h1>Hello World</h1>";
html += "<p>ESP32 mDNS Demo.</p>";
html += "</body></html>";
server.send(200, "text/html", html);
}
void setup() {
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
if (!MDNS.begin(mdnsName)) {
Serial.println("Error setting up MDNS responder!");
while(1) {
delay(1000);
}
}
MDNS.addService("_http", "_tcp", 80);
Serial.println("mDNS responder started. Access your ESP32 at http://" + String(mdnsName) + ".local");
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}