Ejemplo de Sockets en Java: chat básico entre cliente y servidor

Introducción

Escribo esto para que no olvide cómo implementar un socket servidor y uno cliente en Java. Ambos pueden ser conectados en la misma máquina, o conectados a través de una red.

También pueden usar distintos puertos y, como lo dije, distintas IP’s.

Por defecto, el servidor escucha  en el puerto 5050 de localhost, aunque dicho puerto puede cambiarse.

Y el cliente, se conecta por defecto a localhost en el puerto 5050, pero este puede conectarse no sólo a localhost, sino a cualquier IP.

Una vez hecha la conexión, se puede “chatear” de ambos lados. Cabe mencionar que esto corre en la terminal, sin interfaz gráfica ni nada de esas cosas que sólo complican al código. Hice el código lo más limpio y corto posible.

Dicho esto, aquí dejo el código.

Código

Servidor

Cliente

 

Compilando y probando

Como lo dije hace un momento, quise mantener el código simple, sin necesidad de tenerlo en un paquete de un IDE o cosas así, por lo que para probar simplemente tenemos que compilar cada cosa.

Pequeño aviso: para compilar desde la terminal necesitas tener la carpeta bin de Java en la variable PATH del sistema. Si no sabes cómo, lee este post que he dedicado a ello.

Si no quieres hacerlo por terminal, está bien, pega el código de cada clase en archivos separados del IDE de tu preferencia y ejecútalo normalmente.

Una vez descargados los archivos, abrimos una terminal y navegamos hasta donde los hayamos guardado. Para el servidor, ejecutamos:

javac Servidor.java

Para el cliente, lo mismo pero con diferente archivo:

javac Cliente.java

Una vez compilados, y si no hay errores, podemos ejecutarlos. Para el servidor:

java Servidor

Para el cliente (recuerda abrir otra terminal, ya que deben ser procesos distintos):

java Cliente

Nota: también puedes copiar y pegar las clases en un poderoso IDE como NetBeans o IntelliJ IDEA, y ejecutarlo desde ahí.

Ejecutando archivos

Ahora llegó el momento de demostrar que las cosas realmente funcionan. Seguiré el proceso que dije usando la terminal. Compilaré entonces:

Ahora ejecutaré el servidor…

Ahora en otra terminal el cliente…

Se han conectado y ahora puedo escribir mensajes en ambas terminales:

Conclusión

Recuerda que cuando nos pide los puertos e ip’s podemos cambiarlos a como se nos antoje. Si, por ejemplo, el servidor escucha en 192.55.88.6 en el puerto 8081 entonces debemos introducir estos datos cuando la terminal los requiera.

Si queremos dejar todo como está, sólo presionamos Enter sin escribir nada.

Con esto terminamos por hoy.

 

Ejemplo de Sockets en Java: chat básico entre cliente y servidor

Por parzibyte Tiempo de lectura: 2 min
4