Como hacer un minichat con sockets en Java

Hola a todos, hoy os voy a enseñar como hacer un pequeño chat con sockets en Java.

Manejar sockets en Java es mas o menos complicado, pero hacen aplicaciones muy vistosas. Os muestro la idea final.

En esta ocasión, tenemos que conseguir que cada vez que uno de los dos clientes escriba en la caja de texto y le da al botón de enviar, se actualicen ambas ventanas. Recomiendo hacerlo en Java 8.

La idea es tener una clase Servidor, donde este pendiente de lo que le llegue, una para cada ventana y un Cliente, también para cada uno para enviar su correspondiente mensaje

En tema del diseño de la ventana, os los dejo a vuestra elección, yo he puesto un JTextArea, un JTextField y un JButton.

Lo primero que vamos a necesitar es dos clases, que le vamos a llamar Cliente y Servidor, para que se conecten entre ellas.

Aquí os las dejo:— Cliente.java

— Servidor.java

Fíjate que ambas clases implementan la interfaz Runnable, algo necesario para poder arrancar nuestros hilos.

 

También fíjate que la clase Servidor extiende de la clase Observer, esto lo hacemos para que al haber un cambio, es decir, que uno de los clientes cuando envié un mensaje el servidor lo recogerá y notificara a las ventanas que ha habido un cambio, lo hacemos aquí:

Cada una de las ventanas implementaran la interfaz Observer, que nos obligara a crear el método update() que se ejecutara cuando el Servidor notifique los cambios.

En el constructor de cada uno iniciaremos el Servidor, en uno el puerto 5000 y el otro puerto 6000.

— Frm1

— Frm2

Esto lo que hace es iniciar el Servidor con su puerto, añado como observador a la propia ventana. Después, creo un hilo y lo arranco.

Ahora cuando pulsemos en el botón de enviar en el evento de clic, haremos lo siguiente:

— Frm1

— Frm2

Creamos un objeto Cliente con el puerto del otro servidor y el mensaje a mandar, creamos el hilo y lo arrancamos, esto se conectara al servidor, recibirá el mensaje y notificara los cambios a la ventana.

Este es el método update que tendrá cada ventana:

El objeto arg viene el mensaje que hemos escrito, lo parseamos y lo añadimos a la ventana.

Con esto hará que haga el efecto deseado.

Estas son las ventanas completas.

— Frm1.java

— Frm2.java

Os dejo un vídeo donde lo vemos con detalle:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

1 comentario

  1. Alvaro Alva

    Hola como puedo hacer para que permita crear mas clientes?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539