Diferencia entre revisiones de «ChatServer»

De ArduWiki
Saltar a: navegación, buscar
(Vea también)
 
Línea 2: Línea 2:
  
 
== Ejemplo ==
 
== Ejemplo ==
 
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
/*
 
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.
 
 
Circuit:
 
* Ethernet shield attached to pins 10, 11, 12, 13
 
 
created 18 Dec 2009
 
by David A. Mellis
 
modified 9 Apr 2012
 
by Tom Igoe
 
 
*/
 
 
 
#include <SPI.h>
 
#include <SPI.h>
 
#include <Ethernet.h>
 
#include <Ethernet.h>
Línea 28: Línea 9:
 
// The IP address will be dependent on your local network.
 
// The IP address will be dependent on your local network.
 
// gateway and subnet are optional:
 
// gateway and subnet are optional:
byte mac[] = {
+
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
 
};
 
 
IPAddress ip(192, 168, 1, 177);
 
IPAddress ip(192, 168, 1, 177);
 
IPAddress myDns(192,168,1, 1);
 
IPAddress myDns(192,168,1, 1);
 
IPAddress gateway(192, 168, 1, 1);
 
IPAddress gateway(192, 168, 1, 1);
 
IPAddress subnet(255, 255, 0, 0);
 
IPAddress subnet(255, 255, 0, 0);
 
 
 
// telnet defaults to port 23
 
// telnet defaults to port 23
 
EthernetServer server(23);
 
EthernetServer server(23);
 
boolean alreadyConnected = false; // whether or not the client was connected previously
 
boolean alreadyConnected = false; // whether or not the client was connected previously
 +
 +
//Ethernet shield attached to pins 10, 11, 12, 13
  
 
void setup() {
 
void setup() {
  // initialize the ethernet device
+
  Serial.begin(9600);
  Ethernet.begin(mac, ip, myDns, gateway, subnet);
+
  Ethernet.begin(mac, ip, myDns, gateway, subnet);
  // start listening for clients
+
  server.begin();
  server.begin();
+
  Serial.print("Chat server address:");
  // Open serial communications and wait for port to open:
+
  Serial.println(Ethernet.localIP());
  Serial.begin(9600);
 
  while (!Serial) {
 
    ; // wait for serial port to connect. Needed for native USB port only
 
  }
 
 
 
 
 
  Serial.print("Chat server address:");
 
  Serial.println(Ethernet.localIP());
 
 
}
 
}
  
 
void loop() {
 
void loop() {
  // wait for a new client:
+
  // wait for a new client:
  EthernetClient client = server.available();
+
  EthernetClient client = server.available();
 
+
  // when the client sends the first byte, say hello:
  // when the client sends the first byte, say hello:
+
  if (client) {
  if (client) {
+
      if (!alreadyConnected) {
    if (!alreadyConnected) {
+
        // clear out the input buffer:
      // clear out the input buffer:
+
        client.flush();
      client.flush();
+
        Serial.println("We have a new client");
      Serial.println("We have a new client");
+
        client.println("Hello, client!");
      client.println("Hello, client!");
+
        alreadyConnected = true;
      alreadyConnected = true;
+
    }
    }
+
    if (client.available() > 0) {
 
+
        // read the bytes incoming from the client:
    if (client.available() > 0) {
+
        char thisChar = client.read();
      // read the bytes incoming from the client:
+
        // echo the bytes back to the client:
      char thisChar = client.read();
+
        server.write(thisChar);
      // echo the bytes back to the client:
+
        //echo the bytes to the server as well:
      server.write(thisChar);
+
        Serial.write(thisChar);
      // echo the bytes to the server as well:
+
    }
      Serial.write(thisChar);
+
  }
    }
 
  }
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
<categorytree mode=all>Librerias</categorytree>
+
<categorytree mode=all>Libreria Ethernet</categorytree>
* [[Bounce]]
+
 
  
== Referencias ==
+
== Referencias externas ==
  
[[Category:Librerias]]
+
[[Category:Libreria Ethernet]]

Revisión actual del 23:52 30 may 2019

Un servidor simple que distribuye los mensajes entrantes a todos los clientes conectados. Para usarlo, abra una ventana de terminal, Telnet a la dirección IP de su dispositivo y escriba algo. Cualquier texto entrante se enviará a todos los clientes conectados (incluido el que escribe). Además, también podrá ver las entradas del cliente en su monitor de serie.

Ejemplo

#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[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);
IPAddress myDns(192,168,1, 1);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0);
// telnet defaults to port 23
EthernetServer server(23);
boolean alreadyConnected = false; // whether or not the client was connected previously

//Ethernet shield attached to pins 10, 11, 12, 13

void setup() {
   Serial.begin(9600);
   Ethernet.begin(mac, ip, myDns, gateway, subnet);
   server.begin();
   Serial.print("Chat server address:");
   Serial.println(Ethernet.localIP());
}

void loop() {
   // wait for a new client:
   EthernetClient client = server.available();
   // when the client sends the first byte, say hello:
   if (client) {
      if (!alreadyConnected) {
        // clear out the input buffer:
        client.flush();
        Serial.println("We have a new client");
        client.println("Hello, client!");
        alreadyConnected = true;
     }
     if (client.available() > 0) {
        // 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.write(thisChar);
     }
   }
}

Vea también


Referencias externas