La arquitectura de este programa se basa en un solo ejecutable que hace tanto de servidor
como de cliente de las presentaciones dependiendo de los argumentos con los que se inicia. Simplemente si el
programa se ejecuta con la opcion --file-pdf=archivo.pdf, el programa se ejecutara como servidor y hosteara
el archivo dado a la dirección multicast. Un listado mas extenso de las opciones se dan a continuación
Opciones
- -m, --multicast-host The multicast address group
- -p, --port The multicast port group
- -f, --file-pdf The file to serve
- -a, --audio-on Enable the audio server
- -h, --help This help!
Luego de iniciado el entorno gráfico, solo bastará conectar a algún cliente a la dirección multicast para poder
recibir cada una de las diapositivas y la voz del expositor como se verá a continuación.Se pueden apreciar además
los botones de avance y retroceso en la interfaz de servidor, y abajo el area de chat.
Interfaz Servidor
Interfaz Cliente
A un modo más detallado, se dispone de un diagrama UML de la implementación de esta solución
La lógica de funcionamiento es sencilla, el servidor recibe mediante parámetro el archivo PDF a hostear,
este crea una instancia de PDFConvert para obtener las imágenes de las diapositivas
siguientes y anteriores de acuerdo a la página actual que se esta hosteando. El Controller
se encarga de enlazar los botones con los métodos de la clase PDFConvert y los
envía a los clientes multicast gracias al objeto ServerHandler. Este último
también se encarga de compartir tanto el texto, el audio y las imágenes a la dirección multicast y de crear los
objetos Listener (manejados por hebras), encargados de recibir en caso de ser un cliente.