mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-11-03 14:33:37 +03:00 
			
		
		
		
	* ArduinoOTA: allow use without MDNS, add MDNS.update() in handle() * Update examples with MDNS.update() in loop * Update CaptivePortalAdvanced.ino Fix typo * Update CaptivePortalAdvanced.ino astyle * Update Arduino_Wifi_AVRISP.ino astyle
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
  ESP8266 mDNS responder sample
 | 
						|
 | 
						|
  This is an example of an HTTP server that is accessible
 | 
						|
  via http://esp8266.local URL thanks to mDNS responder.
 | 
						|
 | 
						|
  Instructions:
 | 
						|
  - Update WiFi SSID and password as necessary.
 | 
						|
  - Flash the sketch to the ESP8266 board
 | 
						|
  - Install host software:
 | 
						|
    - For Linux, install Avahi (http://avahi.org/).
 | 
						|
    - For Windows, install Bonjour (http://www.apple.com/support/bonjour/).
 | 
						|
    - For Mac OSX and iOS support is built in through Bonjour already.
 | 
						|
  - Point your browser to http://esp8266.local, you should see a response.
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
 | 
						|
#include <ESP8266WiFi.h>
 | 
						|
#include <ESP8266mDNS.h>
 | 
						|
#include <WiFiClient.h>
 | 
						|
 | 
						|
#ifndef STASSID
 | 
						|
#define STASSID "your-ssid"
 | 
						|
#define STAPSK  "your-password"
 | 
						|
#endif
 | 
						|
 | 
						|
const char* ssid = STASSID;
 | 
						|
const char* password = STAPSK;
 | 
						|
 | 
						|
// TCP server at port 80 will respond to HTTP requests
 | 
						|
WiFiServer server(80);
 | 
						|
 | 
						|
void setup(void) {
 | 
						|
  Serial.begin(115200);
 | 
						|
 | 
						|
  // Connect to WiFi network
 | 
						|
  WiFi.mode(WIFI_STA);
 | 
						|
  WiFi.begin(ssid, password);
 | 
						|
  Serial.println("");
 | 
						|
 | 
						|
  // Wait for connection
 | 
						|
  while (WiFi.status() != WL_CONNECTED) {
 | 
						|
    delay(500);
 | 
						|
    Serial.print(".");
 | 
						|
  }
 | 
						|
  Serial.println("");
 | 
						|
  Serial.print("Connected to ");
 | 
						|
  Serial.println(ssid);
 | 
						|
  Serial.print("IP address: ");
 | 
						|
  Serial.println(WiFi.localIP());
 | 
						|
 | 
						|
  // Set up mDNS responder:
 | 
						|
  // - first argument is the domain name, in this example
 | 
						|
  //   the fully-qualified domain name is "esp8266.local"
 | 
						|
  // - second argument is the IP address to advertise
 | 
						|
  //   we send our IP address on the WiFi network
 | 
						|
  if (!MDNS.begin("esp8266")) {
 | 
						|
    Serial.println("Error setting up MDNS responder!");
 | 
						|
    while (1) {
 | 
						|
      delay(1000);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  Serial.println("mDNS responder started");
 | 
						|
 | 
						|
  // Start TCP (HTTP) server
 | 
						|
  server.begin();
 | 
						|
  Serial.println("TCP server started");
 | 
						|
 | 
						|
  // Add service to MDNS-SD
 | 
						|
  MDNS.addService("http", "tcp", 80);
 | 
						|
}
 | 
						|
 | 
						|
void loop(void) {
 | 
						|
 | 
						|
  MDNS.update();
 | 
						|
 | 
						|
  // Check if a client has connected
 | 
						|
  WiFiClient client = server.available();
 | 
						|
  if (!client) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  Serial.println("");
 | 
						|
  Serial.println("New client");
 | 
						|
 | 
						|
  // Wait for data from client to become available
 | 
						|
  while (client.connected() && !client.available()) {
 | 
						|
    delay(1);
 | 
						|
  }
 | 
						|
 | 
						|
  // Read the first line of HTTP request
 | 
						|
  String req = client.readStringUntil('\r');
 | 
						|
 | 
						|
  // First line of HTTP request looks like "GET /path HTTP/1.1"
 | 
						|
  // Retrieve the "/path" part by finding the spaces
 | 
						|
  int addr_start = req.indexOf(' ');
 | 
						|
  int addr_end = req.indexOf(' ', addr_start + 1);
 | 
						|
  if (addr_start == -1 || addr_end == -1) {
 | 
						|
    Serial.print("Invalid request: ");
 | 
						|
    Serial.println(req);
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  req = req.substring(addr_start + 1, addr_end);
 | 
						|
  Serial.print("Request: ");
 | 
						|
  Serial.println(req);
 | 
						|
  client.flush();
 | 
						|
 | 
						|
  String s;
 | 
						|
  if (req == "/") {
 | 
						|
    IPAddress ip = WiFi.localIP();
 | 
						|
    String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
 | 
						|
    s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at ";
 | 
						|
    s += ipStr;
 | 
						|
    s += "</html>\r\n\r\n";
 | 
						|
    Serial.println("Sending 200");
 | 
						|
  } else {
 | 
						|
    s = "HTTP/1.1 404 Not Found\r\n\r\n";
 | 
						|
    Serial.println("Sending 404");
 | 
						|
  }
 | 
						|
  client.print(s);
 | 
						|
 | 
						|
  Serial.println("Done with client");
 | 
						|
}
 | 
						|
 |