Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PROGRAMACIÓN DISTRIBUIDA (RMI Y SOCKETS TCP Y UDP)

Este repositorio contiene una serie de ejercicios académicos enfocados en la implementación de Sistemas Distribuidos en Java. Los proyectos abordan la comunicación entre procesos mediante diferentes niveles de abstracción y protocolos.

  • Java RMI (Remote Method Invocation)
  • Sockets TCP (Orientados a conexión)
  • Sockets UDP (No orientados a conexión)
  • Canales Asíncronos

Estructura del Repositorio

/src ├── /TresEquipos # Sistema híbrido (Async, RMI y Sockets) ├── /CineRMI # Reserva de entradas (Gestión de aforo) ├── /TrenRMI # Reserva de asientos específicos (Matriz) └── /RMIPrimos # Procesamiento paralelo RMI └── /SocketsTCPprimos # Procesamiento paralelo distribuido TCP └── /SocketsUDPprimos # Procesamiento paralelo distribuido UDP

Ejecución

Cada proyecto es independiente. Para probar los sistemas distribuidos, generalmente deberás seguir este orden:

  1. Iniciar el Servidor (o Registry RMI): Ejecutar primero la clase Servidor o MainServidor.
  2. Iniciar el/los Cliente(s): Ejecutar la clase Cliente o MainCliente en una terminal separada (o varias para probar concurrencia). Nota: Asegurarse de que los puertos utilizados (ej. 1099 para RMI, o puertos TCP/UDP específicos) estén libres en la máquina. Este repositorio fue creado con fines educativos para la asignatura de Paradigmas de Programación.

Descripción de Proyectos

  1. Sistema Híbrido de 3 EQUIPOS (E1, E2, E3) 🔄. Integración de múltiples protocolos de comunicación en un flujo circular de datos. Se simula un sistema compuesto por tres nodos que procesan información numérica secuencialmente:

    • E1 ➔ E2: Canales de comunicación asíncronos.
    • E2 ➔ E3: Java RMI.
    • E3 ➔ E1: Sockets TCP. Lógica del Flujo:
    • Equipo E1 (Cliente/Iniciador): Lee 5 enteros positivos del usuario (descarta negativos). Los envía a E2. Finalmente, espera resultados de E3 hasta recibir un flag de parada (-10).
    • Equipo E2 (Servidor Intermedio): Servicio continuo. Recibe un número N, genera dos nuevos ($N \times 2$ y $N / 2$ división entera) y los envía inmediatamente a E3 vía RMI. Total: 10 envíos.
    • Equipo E3 (Filtro): Recibe los 10 números. Filtra y elimina los que sean múltiplos de 3. Envía los restantes a E1 vía TCP y finaliza enviando un -10.
  2. CINE RMI: Cliente-Servidor con estado compartido y concurrencia. Sistema de reserva de entradas para un cine con 4 películas y salas de capacidad limitada (máx. 30). El cliente consulta la cartelera. Intenta comprar N entradas para una película. Respuestas del Servidor:

    • Reserva exitosa: Se descuenta el aforo.
    • No hay entradas suficientes: Devuelve una lista de películas alternativas que sí tienen cupo.
    • Cine completo: Informa del cierre de ventas. El servidor maneja múltiples clientes simultáneamente garantizando la integridad de los datos (Thread-safety).
  3. BILLETES RMI 🚆: Gestión de recursos específicos (Matriz de Asientos). Simulación de reservas en un vagón representado por una matriz de 10 filas x 4 columnas. El cliente solicita un asiento específico por coordenada (Fila, Columna). Respuestas del Servidor:

    • Reservado: Compra exitosa.
    • Ocupado: El asiento ya tiene dueño. El servidor devuelve la lista de asientos libres para que el cliente elija otro.
    • Vagón completo: Finaliza la operación. Integridad de datos ante peticiones concurrentes.
  4. Cálculo de PRIMOS Distribuido con todos los mecanismos (RMI, TCP y UDP): computación paralela y comparación de protocolos de transporte. Tres versiones de un mismo problema: Calcular la cantidad de números primos entre 1 y N. Todos siguen una lógica común:

    • El cliente envía un número N.
    • El servidor calcula la cantidad de primos en ese rango.
    • Paralelismo: cálculo en el servidor debe realizarse obligatoriamente utilizando al menos 2 hilos de ejecución para dividir la carga de trabajo. Las varientes de implementación son:
    • Versión RMI: Invocación de método remoto. Abstracción alta.
    • Versión Sockets TCP: Fiabilidad y orden garantizado (Stream).
    • Versión Sockets UDP: Envío de datagramas sin conexión (rápido pero sin garantías de entrega).

About

Ejemplos de problemas de programación distribuida con RMI y Sockets TCP y UDP

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages