Diferencia entre revisiones de «ChatServer»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «<big>'''Chat Server'''</big> Un servidor simple que distribuye los mensajes entrantes a todos los clientes conectados. Para usarlo, abra una ventana de terminal, Telnet a...»)
 
 
(No se muestran 5 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
<big>'''Chat Server'''</big>
 
 
 
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.
 
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 ==
Chat Server
+
<syntaxhighlight lang="c++">
 
 
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 27: 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
 
  }
 
  
 +
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);
 +
    }
 +
  }
 +
}
 +
</syntaxhighlight>
  
  Serial.print("Chat server address:");
+
== Vea también ==
  Serial.println(Ethernet.localIP());
+
<categorytree mode=all>Libreria Ethernet</categorytree>
}
 
  
void loop() {
 
  // wait for a new client:
 
  EthernetClient client = server.available();
 
  
  // when the client sends the first byte, say hello:
+
== Referencias externas ==
  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) {
+
[[Category:Libreria Ethernet]]
      // 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);
 
    }
 
  }
 
}
 

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