Ejercicio de Evaluación (Curso 2010-2011)
Esta práctica también se realizó en el curso 2007-2008.
y anteriormente en el curso 2004-2005.
El ejercicio final consiste en realizar un cliente de chat según las siguientes especificaciones:
- Gui utilizando Swing
- Los elementos mínimos serán: ventana de conversación, campo de introducción de texto, nick,
lista de usuarios activos, menu de acciones.
- Las acciones mínimas serán (aparte de la capacidad de visualizar conversaciones y participar en ellas):
conectar con el servidor, terminar, abrir conversaciones privadas con otros usuarios, activar/desactivar captura de conversación
en un fichero.
- La capacidad de comunicación entre clientes estará soportada por un servidor que se proporciona más abajo, y por un protocolo
soportado por intercambio de objetos. Estos objetos serán de la clase ChatProtocol que se encuentra dentro del fichero "jar"
del servidor en el paquete "chat" (hacer "
import chat.ChatProtocol; "). Se deberá por tanto utilizar este mismo "jar" como biblioteca al generar el cliente: javac -cp ChatServer.jar ... y para usarlo: java -cp ChatServer.jar ... ). NOTA: si se quiere, puede extraerse esta clase
del "jar", pero no debe olvidarse que debe residir en la carpeta/paquete "chat" (en su definición se ha especificado "package chat; ")
- Cada alumno deberá pensar en alguna característica particular que distinga a su cliente del resto de los presentados por sus compañeros. Esta
puede ser meramente estética o bien funcional.
- Los alumnos pueden plantear mejoras que necesiten soporte por parte del servidor. Estas serán atendidas en caso de considerarse interesantes
ampliando las capacidades del servidor.
|
Diagrama de estados del servidor.
|
Notas sobre el servidor: limitaciones y cambios previstos.
SERVIDOR DE PARTIDA: 12/05/2008. Chat08 Versión 3.0 R3(servidor) (Javadoc)
Errores detectados:
R3: Al recibir EXIT de un cliente hace broadcast(OUT) y le responde EXIT para darle de baja cuando corte el socket. Debe darle de baja al recibir el EXIT, no esperar al corte del socket (permitir que corte el cliente y si no lo hace cortar trasn un timeout).
R3: Al parecer (no comprobado) si un cliente corta el socket sin enviar un EXIT el servidor no reacciona correctamente.
R3: Recorta los mensajes a 20 caracteres. El servidor lo hace en su log intencionadamente, pero este comportamiento se observa también en los clientes