Wifi Servidor de chat sencillo

Un sencillo servidor que distribuye los mensajes entrantes a todos los clientes conectados. Para utilizarlo, abra una ventana de terminal, telnet a la dirección IP de su escudo WiFi o MKR1000 , y escriba algo. Cualquier texto entrante será enviado a todos los clientes conectados (incluyendo el mecanografíado). Además, usted será capaz de ver la entrada del cliente en su monitor serie del Software Arduino (IDE).

Hardware necesario

Escudo Wifi101 Arduino
Placa Arduino o Genuino Zero
o
Placa MKR1000

Circuito

El pin digital 7 se utiliza como un pin de diálogo entre el escudo WiFi  101 y la placa, y no debe ser utilizado.

Usted debe tener acceso a una red inalámbrica 802.11b/g que se conecte a internet para este ejemplo. Tendrá que cambiar la configuración de red en el programa para que se corresponda con su red SSID particular.

Para redes que utilizan WPA / WPA2 Personal, necesita el SSID y la contraseña. El escudo no se conecta a las redes que utilizan el cifrado WPA2 Enterprise.
Las contraseñas de red WEP son cadenas hexadecimales conocidas como claves. Una red WEP puede tener 4 claves diferentes; a cada clave se le asigna un valor "Key Index". En redes WEP cifradas, necesita el SSID, la clave y el número clave.


En la imagen superior, la placa Arduino o Genuino Zero se apilan debajo del escudo WiFi.

Código

// Servidor de chat 

// Un sencillo servidor de chat que distribuye los mensajes 
// entrantes a todos clientes conectados. Para utilizar telnet 
// a la dirección IP de su dispositivo y tipo. 
// Se puede ver la entrada del cliente en el monitor serie 

// Este ejemplo está escrito para una red mediante el cifrado 
// WPA. para WEP o WPA, cambiarl Wifi.begin () llamandolo 
// en consecuencia. 

// Circuito: 
// * escudo Wi-Fi  conectado

// Creado 18 decDiciembre de 2009 por David A. Mellis 
// modificado el 31 de de Mayo de 2012 por Tom Igoe

#include <SPI.h>
#include <WiFi101.h>

char ssid[] = "yourNetwork"; //  su red SSID (nombre)
char pass[] = "secretPassword";    // su password de red (uselo para WPA, o uselo como clave para WEP)

int keyIndex = 0;            // su clave numero Index  (solo necesario para WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(23);

boolean alreadyConnected = false; // si el cliente esbaba o no previamente conectado

void setup() {
  //Initializa el puerto serie y espera a que abra:
  Serial.begin(9600);
  while (!Serial) {
    ; // espera a que el puerto serie se conecte. Solo necesario para USBnetivo
  }

  // comprueba la presencia del escudo:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // no continua:
    while (true);
  }

  // intenta conectar con una red Wifi:
  while ( status != WL_CONNECTED) {
    Serial.print("Intentando la conexión con SSID: ");
    Serial.println(ssid);
    // Conectarse a la red WPA / WPA2. Cambie esta línea si se utiliza una red abierta o WEP:
    status = WiFi.begin(ssid, pass);

    // espera 10 segundos para la conexion:
    delay(10000);
  }

  // inicia el servidor:
  server.begin();
  // ahora esta conectado, imprimir el estado:
  printWifiStatus();
}


void loop() {
  // espera un nuevo cliente:
  WiFiClient client = server.available();


  // cuando el cliente envía el primer byte, saludar:
  if (client) {
    if (!alreadyConnected) {
      // limpiar el buffer de entrada:
      client.flush();
      Serial.println("Tiene un nuevo cliente");
      client.println("Hola, cliente!");
      alreadyConnected = true;
    }

    if (client.available() > 0) {
      // lee los bytes entrantes del cliente:
      char thisChar = client.read();
      // eco de los bytes de vuelta al cliente:
      server.write(thisChar);
      // eco de los bytes en el servidor, así:
      Serial.write(thisChar);
    }
  }
}


void printWifiStatus() {
  // imprimir el SSID de la red a la que está conectado:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // imprime la direccion IP de su escudo WiFi:
  IPAddress ip = WiFi.localIP();
  Serial.print("Dirección IP: ");
  Serial.println(ip);

  // imprime la potencia de la señal recibida:
  long rssi = WiFi.RSSI();
  Serial.print("Potencia de la señal (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

1 comentario:

  1. Un sencillo servidor que distribuye los mensajes entrantes a todos los clientes conectados. Para utilizarlo, abra una ventana de terminal. consejoscomunales.net/rebeliones-indigenas-del-siglo-xviii/

    ResponderEliminar