Diferencia entre revisiones de «ChatServer»
De ArduWiki
(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: | ||
− | |||
− | |||
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 == | |
− | + | <syntaxhighlight lang="c++"> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
#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 }; |
− | |||
− | }; | ||
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() { | ||
− | + | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
− | + | == Vea también == | |
− | + | <categorytree mode=all>Libreria Ethernet</categorytree> | |
− | |||
− | |||
− | |||
− | |||
− | + | == Referencias externas == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[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