mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-11-03 14:33:37 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 DHCP Chat  Server
 | 
						|
 | 
						|
 A simple server that distributes any incoming messages to all
 | 
						|
 connected clients.  To use telnet to  your device's IP address and type.
 | 
						|
 You can see the client's input in the serial monitor as well.
 | 
						|
 Using an Arduino Wiznet Ethernet shield.
 | 
						|
 | 
						|
 THis version attempts to get an IP address using DHCP
 | 
						|
 | 
						|
 Circuit:
 | 
						|
 * Ethernet shield attached to pins 10, 11, 12, 13
 | 
						|
 | 
						|
 created 21 May 2011
 | 
						|
 modified 9 Apr 2012
 | 
						|
 by Tom Igoe
 | 
						|
 Based on ChatServer example by David A. Mellis
 | 
						|
 | 
						|
 */
 | 
						|
 | 
						|
#include <SPI.h>
 | 
						|
#include <Ethernet.h>
 | 
						|
 | 
						|
// Enter a MAC address and IP address for your controller below.
 | 
						|
// The IP address will be dependent on your local network.
 | 
						|
// gateway and subnet are optional:
 | 
						|
byte mac[] = {
 | 
						|
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
 | 
						|
};
 | 
						|
IPAddress ip(192, 168, 1, 177);
 | 
						|
IPAddress gateway(192, 168, 1, 1);
 | 
						|
IPAddress subnet(255, 255, 0, 0);
 | 
						|
 | 
						|
// telnet defaults to port 23
 | 
						|
EthernetServer server(23);
 | 
						|
boolean gotAMessage = false; // whether or not you got a message from the client yet
 | 
						|
 | 
						|
void setup() {
 | 
						|
  // Open serial communications and wait for port to open:
 | 
						|
  Serial.begin(9600);
 | 
						|
  // this check is only needed on the Leonardo:
 | 
						|
  while (!Serial) {
 | 
						|
    ; // wait for serial port to connect. Needed for Leonardo only
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
  // start the Ethernet connection:
 | 
						|
  Serial.println("Trying to get an IP address using DHCP");
 | 
						|
  if (Ethernet.begin(mac) == 0) {
 | 
						|
    Serial.println("Failed to configure Ethernet using DHCP");
 | 
						|
    // initialize the ethernet device not using DHCP:
 | 
						|
    Ethernet.begin(mac, ip, gateway, subnet);
 | 
						|
  }
 | 
						|
  // print your local IP address:
 | 
						|
  Serial.print("My IP address: ");
 | 
						|
  ip = Ethernet.localIP();
 | 
						|
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
 | 
						|
    // print the value of each byte of the IP address:
 | 
						|
    Serial.print(ip[thisByte], DEC);
 | 
						|
    Serial.print(".");
 | 
						|
  }
 | 
						|
  Serial.println();
 | 
						|
  // start listening for clients
 | 
						|
  server.begin();
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
void loop() {
 | 
						|
  // wait for a new client:
 | 
						|
  EthernetClient client = server.available();
 | 
						|
 | 
						|
  // when the client sends the first byte, say hello:
 | 
						|
  if (client) {
 | 
						|
    if (!gotAMessage) {
 | 
						|
      Serial.println("We have a new client");
 | 
						|
      client.println("Hello, client!");
 | 
						|
      gotAMessage = true;
 | 
						|
    }
 | 
						|
 | 
						|
    // read the bytes incoming from the client:
 | 
						|
    char thisChar = client.read();
 | 
						|
    // echo the bytes back to the client:
 | 
						|
    server.write(thisChar);
 | 
						|
    // echo the bytes to the server as well:
 | 
						|
    Serial.print(thisChar);
 | 
						|
  }
 | 
						|
}
 | 
						|
 |