Manejo de sockets en Java para sistema cliente-servidor
Find a file
2026-04-02 00:59:27 +02:00
.idea Creación repositorio 2026-04-01 20:26:15 +02:00
src/main/java/ut3/act1 error grave ejecución corregido (v1.1.1) 2026-04-02 00:59:27 +02:00
.gitignore Creación repositorio 2026-04-01 20:26:15 +02:00
.gitlab-ci.yml Creación repositorio 2026-04-01 20:26:15 +02:00
pom.xml error grave ejecución corregido (v1.1.1) 2026-04-02 00:59:27 +02:00
README.md Creación README 2026-04-01 22:51:44 +00:00

Programación en Java: Sockets y Estructura Cliente-Servidor

Este proyecto ha sido desarrollado como parte de la Actividad 1 de la Unidad de Trabajo 3 (UT3): "Programación de comunicaciones en red".

El programa implementa un sistema cliente-servidor utilizando sockets TCP para ejecutar un juego interactivo. El sistema permite que un cliente automático intente adivinar un número secreto generado por el servidor (1-20), recibiendo respuestas del servidor para ajustar el rango de números.

Características Principales

  • Modelo Cliente-Servidor: Implementación de estructura en dónde el servidor y el cliente interactúan mediante BufferedReader y PrintWriter.
  • Sockets TCP: Uso de las clases Socket y ServerSocket del paquete java.net para realizar una comunicación de red entre los dos objetos (Servidor y Cliente).
  • Programación Multihilo: Implementación de la interfaz Runnable en la clase Servidor para gestionarlo en un hilo independiente y no corte el hilo principal de la clase Main.
  • Gestión Eficiente de Recursos: Uso de estructuras try-with-resources para asegurar el cierre automático de todos los objetos y sockets, optimizando al máximo el uso de recursos.

Funcionamiento

El programa sigue el siguiente flujo:

  1. Inicio: El programa crea los objetos servidor y cliente y los ejecuta por primera vez.
  2. Creación: El servidor crea un numero (1-20) y abre un puerto de escucha (8080) mediante el Socket.
  3. Conexión: El cliente inicia la conexión con el servidor que acepta la petición y establece la comunicación.
  4. Protocolo de Comunicación:
    • El cliente genera una apuesta basada en un rango que se actualiza segun resultados anteriores (min y max).
    • El servidor recibe el número, lo compara con el secreto y responde con un estado: "pequeno", "grande" o "acertado".
    • El cliente procesa la respuesta para ajustar el rango del número en el siguiente intento.
  5. Finalización: Una vez detectado el acierto, el servidor notifica al cliente y el juego termina. Luego, se permite iniciar una nueva partida.

Instrucciones de Uso

Para ejecutar este programa, se puede usar el fichero .jar o ejecutar Main.java del código fuente desde las releases del proyecto.


Este proyecto sirve como evidencia del aprendizaje sobre el desarrollo de aplicaciones distribuidas y comunicaciones en red en Java para la asignatura de Programación de Servicios y Procesos.