Tarea 4: Video Club Usando Multicast

Comandos
    vcCSm:       Servidor Central del Video Club
    vcAdmin: Aplicación cliente para la administración
    vcUser:    Aplicación cliente para que el usuario interactue con el servidor Central del video Club
    vcVRSm:    Servidor de Recepción de Videos
Sintaxis
   vcCSm   <Puerto para aceptar Usuarios XXX> <Puerto para acceder a Servidores de recepción YYY> <PUERTO MULTICAST> <CANAL MULTICAST>
   vcAdmin <nombre máquina Servidor Central> <Puerto para acceder al Servidor Central XXX>
   vcUser <nombre máquina Servidor Central> <Puerto para acceder al Servidor Central XXX>
   vcVRSm  <Puerto para aceptar al Servidor Central YYY>
    Archivos Relacionados: videos.txt

Descripción


a,b,c son Conexiones TCP,    d: es datagrama multicast

Servidor Central (video club Central Server)
    La tarea asume que el servidor central corre practicamente en forma permanente. Espera por conexiones en el puerto XXX. Inmediatamente despues de aceptar una conexión, este servidor espera la identificador del tipo de cliente a través de un primer mensaje remoto. Si el cliente resulta ser un usuario, el servidor se prepara para aceptar los requerimientos de un cliente vcUser. Si el cliente resulta ser un administrador, el servidor procede a aceptar los comandos del cliente vcAdmin .
    Para responder a las consultas de usuarios y administradores, del cual sólo uno es aceptado por vez, el servidor maneja y actualiza la información del archivo videos.txt.

Cliente de Administración (v ideo club A dministator)
    Esta aplicación cliente se conecta al servidor central al puerto XXX y se identifica como tal.  El administrador nos permite:
1.- Listar los videos disponibles en la "base de datos" (videos.txt) Se lista:
    Número del video        Nombre del Video        Duración
2.- Agregar un nuevo video para ser solicitado.
En este caso el cliente le envia todos los datos del nuevo video (nombre, descripción y su ubicación en el sisyema de archivos del servidor).
3.- Remover un video del sistema. (sólo lo saca de videos.txt y ya no está disponible una vez removido). Si el video ya había sido programado para transmisión, tome el camino más simple segun su implementación; por ejemplo, manteniendo lo ya programado.

Cliente Usuario (video club User)

    El vcUser se contacta con el servidor y las siguientes opciones están disponibles para el usuario:
1.- Listado de videos disponible. Se lista:
    Número del video        Nombre del Video        Duración
2.- Solicitud de un video. Se ingresa el número del video y el horario más tardio que toleramos se nos envie el video al servidor vcVRS. Éste servidor también es especificado por el usuario. El servidor responde si la programación pudo o no ser satisfecha. Otra responsabilidad de vcUser es enviar a vcCS la cuenta del usuario cliente, para su posterior contacto via email.
La máquina receptora del video se especifica a través de su nombre lógico (ej. mateo.elo.utfsm.cl)
Múltiples usuarios pueden estar ejecutando el cliente vcUser a al vez.

Servidor de Recepción de Videos (video c lub Video Receiver Server)
    Este servidor corre en forma permanete en distintos lugares. Su función es la de recibir el video que previamente algún usuario solicitó.  Los videos recibidos se almacenan en el directorio actual para vcVRS (aquel desde donde se ejecutó). Una vez trasferido el video desde el servidor central a  un (los) servidor(es) vcVRS, el servidor central envia un correo al (los) usuario(s) solicitante(s) del video notificando el cumplimiento del requerimiento:
"Su video <nombre del video> ya ha sido depositado en <nombre del servidor vcVRS>

El archivo videos.txt tiene el siguiente formato:
<Número del video>  ^ <nombre del video> ^ <Duración en minutos> <localización en el sistema de archivos><NewLine>

Protocolo de transferencia de videos entre   vcCS y vcVRS
   
La transferencia del video entre el servidor central y los servidores de recepción se efectúa usando UDP multicast. En cualquier caso la información de control (señalar inicio de transmisión e información de control sobre el archivo -su nombre-; y al término información de término de la transferencia) debe ser transportada a través de una conexión TCP. Adicionalmente el servidor central notifica usa el canal TCP para informar al receptor sobre los parámetros (puerto y canal multicast) a ser usados para la transferencia de los datos (archivo de video). Es así como el Servidor de Recepción se entera del puerto y canal multicast a usar.
    Dado que la trasmisión de la película se hace en forma multicast, vcVRS aprovecha de programar en el mismo horario de bajada a todos los usarios que han solicitado la misma película.

Notas Generales
El diseñador y programdor de esta tarea es libre de utilizar el algoritmo de satisfacción de los requerimientos que mejor estime conveniete. Lo fundamental es tener un sistema que funcione aun con un algoritmo simple de itineración de solicitudes.

 vcCS y vcVRS deben transferir archivos reales. Obviamente no se requiere que sean videos, pero debe haber una transferencia real, la cual se asume dura la duración estipulada para el video aun cuando en la práctica pueda ser de mucho menor duración (pero no mayor ducración).