Servicio de CHAT parte I

Primera parte

El protocolo UDP puede resultar muy adecuado para soportar un servicio de Chat, suponiendo una fiabilidad razonable en las líneas de comunicaciones. Si la probabilidad de que los mensajes se reciban adecuadamente es alta. UDP proporciona un nivel de comunicaciones sencillo y poco exigente en recursos.

En este apartado se desarrolla un servicio de Chat, proporcionándose tanto la parte del servidor como la del cliente. El servidor se encarga de recibir los mensajes de los clientes, almacenándolos en una lista FIFO (First In First Out, o lo que es lo mismo primero en entrar primero en salir) y transmitirlos a los clientes cuando estos lo solicitan. Los clientes envían mensajes y reciben, periódicamente, la lista de mensajes que almacena el servidor.

Cuando un usuario escribe un mensaje en el programa cliente del Chat, el texto se empaqueta en un datagrama y se envía al servidor; el servidor recibe el mensaje y lo guarda en la primera posición del buffer FIFO. Esta operación se repite cada vez que un cliente envía un mensaje al servidor del Chat.

Los programas cliente hacen peticiones periodicas al servidor con el fin de recibir todos los mensajes almacenados en la lista FIFO; de esta forma los usuarios pueden ver de manera automática los últimos mensajes recibidos en el servidor del Chat.

A continuación se presenta el diseño empleado en la aplicación. La clase TRecibeUDP (comentada en posts anterioes) ha sido ampliada para proporcionar métodos adicionales. Los nuevos ficheros creados son ChatCliente.java y ChatServidor.java,cada uno de los cuales contiene varias clases.

esquchatudpcliente.jpg

Ejemplo Practico TRecibeUDP.java

La clase TRecibeUDP ha sido modificada para incorporar el metodo DameIPRemota; este metodo devuelve el contenido de la propiedad IPRemota. La direccion IP remota se consigue a traves del metodo getAddress, perteneciente a la clase DatagramPacket, y del metodo getHostAddress, perteneciente a la clase InetAddress.

import java.net.*;

public class TRecibeUDP extends Object {
DatagramSocket MiSocket;
DatagramPacket Paquete;
byte[] buffer;
String IPRemota=””;

public synchronized String Recibe (int Puerto, int TamanioMaximoMensaje,int TimeOut){
try {
MiSocket = new DatagramSocket(Puerto);
MiSocket.setSoTimeout(TimeOut);
buffer = new byte[TamanioMaximoMensaje];
Paquete = new DatagramPacket(buffer, buffer.length);
MiSocket.receive(Paquete);
IPRemota = Paquete.getAddress().getHostAddress();
MiSocket.close();
} catch (Exception e) {
System.out.println( “Error”);
} //end try

return new String(Paquete.getData() ).substring( 0,Paquete.getLength() );
} // end recibe

public synchronized String DameIPRemota() {
return IPRemota;
}
} // end TRecibeUDP

 

Eso es todo por hoy, en los proximos dias completare la guia con el script completo de “ChatServidor.java” y “ChatCliente.java”

 

Saludos!

 

Anuncios

About exequielc

Hola! Estás en el blog de Exequiel Catalani. Como es un blog, se trata de una extensión más o menos lineal de las cosas que hago y pasan por mi cabeza: ciberculturas, videos de la red, nuevos medios y tecnologia, y Programacion etc...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: