Ya he acabado la implementación de un chat, al menos eso creo. Muchas vueltas a la cabeza y al final la solución me ha quedado relativamente corta.
Por una parte, la clase Cliente, la cual simplemente crea el socket para conectarse al servidor y una instancia de una clase que la he llamado Vista, que recibirá ese socket y el nombre del usuario.
La clase vista crea el interfaz gráfico (de ahí su nombre) y las conexiones para leer y escribir en el socket (BufferedReader y PrintWriter). Además crea un hilo para ir leyendo los mensajes y ponerlos en pantalla y un ActionListener para que cuando se pulse el botón envie el mensaje en el PrintWriter.
La otra parte es la clase Servidor, una clase que define su socket y tiene un bucle infinito que va escuchando peticiones de clientes, y para cada petición crea una instancia de una clase llamada "EnvioDatos", la cual implementa a Runnable.
Esta clase se encarga de hacer llegar los mensajes a los demás clientes. La clave ha sido usar la clase Vector, la cual almacena hilos y podemos usar la sincronización para recorrerla y soltar el mensaje a todos los clientes.
Lo dicho, más lineas aquí que en el código ^^
No hay comentarios:
Publicar un comentario