java

Páginas: 6 (1359 palabras) Publicado: 17 de febrero de 2014
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 client es que inicia la comunicación pidiendo un servicioy 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, esto es muyimportante 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 de entrada (InputStream) y desalida (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 a los flujos de entrada (InputStream) y desalida (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 de Java es que por medio de flujos (streams), lo que elcliente 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 abrí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 nuestra programació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 el código de cada programa porque veremos sólo el código relevante,los archivos están en el grupo que bajaste o 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
BufferedReader entrada; // flujo parapoder 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 de conexión en el puerto 5000y 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 regresa directamente un string,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Java
  • Java
  • java
  • JAVA
  • java
  • java
  • javiera
  • Java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS