En el pasado (y en el presente también) siempre he querido incluir en el contenido de la materia de estructura de datos la posibilidad de hacer un práctico que tenga que ver con redes. Este breve artículo trata de cómo se pueden conectar dos computadoras en red y de las bases por las cuales tenemos protocolos. Veremos:
- Significado de las direcciones IP y conceptos muy básicos de redes
- Cómo usar sockets para abrir canales de comnicación entre dos computadoras
- Concepto de un protocolo y de cómo podemos usar uno para hacer un chat básico
Conceptos básicos de redes
https://www.google.com
Programación de conexión con Sockets en Java
Los sockets nos permiten abrir canales de comunicación de bajo nivel con otras computadoras. Depende de si queremos esperar una conexión o si queremos conectarnos:
- SocketServer: Es un objeto que nos permite esperar por una conexión. Cuando alguien se conecta al puerto que está escuchando el objeto, entonces nos devuelve un socket.
- Socket: Es un objeto que tiene dos canales, uno de entrada y otro de salida. Sobre uno de ellos leemos lo que nos envía la otra computadora conectada; y sobre el otro podemos escribir lo que querramos a la otra computadora.
ServerSocket srv = new ServerSocket(4949);
Socket sck = srv.accept();
PrintWriter out = new PrintWriter( sck.getOutputStream());
InputStreamReader reader = new InputStreamReader(sck.getInputStream());
BufferedReader in = new BufferedReader(reader);
String nombre = in.readLine();
System.out.println(" --LLEGA-- " + nombre);
out.println("Hola, como estas " + nombre);
out.flush();
System.out.println(" --VA-- Hola, como estas " + nombre);
sck.close();
srv.close();
Protocolo
Finalmente llegamos al punto que queríamos llegar, qué es un protocolo. Cuando se conectan dos computadoras, se tienen que poner de acuerdo cuales son los comandos y los tipos de mensajes que se pueden intercambiar entre las dos.
Si quisiéramos hacer un simple chat, el protocolo más simple que se nos puede ocurrir es que cada vez que queremos enviar un mensaje a la otra computadora enviamos el texto:
MSG texto cualquiera
Mientras las dos computadoras estan conectadas se están enviando mensajes con ese comando. Cuando una de las dos desea cortar la comunicación entonces puede enviar el mensaje:
EXIT
Nuestro protocolo consiste de dos comandos MSG y EXIT. El primero acepta un argument que es justamente el mensaje a enviar y el segundo es sin argumentos.
En el caso de que necesitemos que mensajes sean enviados de una computadora a otra y no tenemos un protocolo oficial, nosotros debemos crear ese protocolo y darle reglas de negocio a cada uno de los comandos que aceptemos en el protocolo.
Comentarios