Hilos

Solo disponible en BuenasTareas
  • Páginas : 9 (2159 palabras )
  • Descarga(s) : 4
  • Publicado : 19 de abril de 2010
Leer documento completo
Vista previa del texto
[pic]

Aplicación Cliente/Servidor

Vamos a desarrollar una pequeña aplicación de comunicación en redes, la haremos del tipo Cliente/Servidor, a veces cuando tenemos aplicaciones de este tipo es difícil distinguir que parte de la aplicación es el cliente y cual el servidor, en nuestro caso será fácil darse cuenta de cual es cual. Normalmente el cliente es que inicia la comunicación pidiendoun servicio y el servidor es el que provee ese servicio.
La comunicación entre ambas partes además de tener como infraestructura sockets de TCP/IP tiene que tener un protocolo particular, este protocolo es que marca el orden de la transmisión de los datos y el tipo de estos datos, para que coincida el tipo de datos que una de las entidades manda y el tipo de datos que la otra espera recibir, estoes muy importante porque si no se respeta la aplicación no sirve para nada, además de que contendrá una serie de errores.

Esquema de un Servidor

1. Abrir un socket (ServerSocket) para esperar por peticiones de conexión
2. Al llegar una petición, crear otro socket (Socket) por medio del cual se comunicará con el cliente
3. Asociar uno o más flujos intermedios a los flujos deentrada (InputStream) y de salida (OutputStream) asignados al socket
4. Leer/Escribir a los flujos de acuerdo al protocolo establecido
5. Eventualmente termina la comunicación
6. Cerrar flujos y sockets

Esquema del Cliente

1. Abrir un socket (Socket) para conectarse y comunicarse con el Servidor
2. Establecer conexión con el Servidor
3. Asociar uno o más flujos intermedios alos flujos de entrada (InputStream) y de salida (OutputStream) asignados al socket
4. Leer/Escribir a los flujos de acuerdo al protocolo establecido
5. Eventualmente termina la comunicación
6. Cerrar flujos y sockets

Ejemplo2

En nuestro ejemplo el cliente enviará strings al Servidor y este le contestará con la longitud del string recibido, algo que nos dará una idea del poder deJava es que por medio de flujos (streams), lo que el cliente mandará será literalmente un String y no un grupo de bytes, y lo más interesante es que el Servidor contestará con un entero (int) no con un par de bytes que habría que transformar para poder manejarlo como un entero. Lo anterior se puede lograr por el uso de flujos en Java que nos permite subir el nivel de abstracción de nuestraprogramación, generando programas más legibles y mantenibles.
Ambos programas terminan cuando el cliente envía un string nulo al Servidor, además el cliente debe dar la dirección IP del servidor en la línea de comandos, para poder correr los programas en cualquier máquina sin necesidad de cambiar la dirección delservidor y volver a compilar, así es que adelante!
Te recomiendo que tengas a mano elcódigo de cada programa porque veremos sólo el código relevante, los puedes ver en Servidor2.java y Cliente2.java .

Servidor2.java

Delcaración de las variables utilizadas:
ServerSocket yo = null; // Socket para escuchar por peticiones de conexión
Socket cliente = null; // Socket para comunicarse con el cliente, recibir
el string y mandar el entero
BufferedReaderentrada; // flujo para poder leer del socket un string,
con el método readline()
DataOutputStream salida;// flujo para poder mandar un entero al cliente
con el método writeInt()
String llego; // El string donde se almacenará el string
recibido del cliente
 

Crear el socket para escuchar por peticiones deconexión en el puerto 5000 y ponerlo a escuchar, cuando haya una petición asignar el socket para conexión al socket cliente.
yo = new ServerSocket(5000);
cliente = yo.accept();

Asignar los flujos de entrada y salida al socket cliente para poder leer y escribir, aquí la cosa se pone bastante interesante. Para leer un string mandado por el cliente lo queremos hacer con readline() que me...
tracking img