Tarea 3: Video Club Usando Sockets

Comandos
    vcCS:       Servidor Central del Video Club
    vcVRS:    Servidor de Recepción de Videos
    vcUser:    Aplicación cliente para que el usuario interactue con el servidor Central del video Club
    vcAdmin: Aplicación cliente para la administración

Sintaxis
   vcCS   <Puerto para aceptar Usuarios XXX> <Puerto para aceptar alAdministrador ZZZ><Puerto acceder a Servidores de recepción YYY>
   vcVRS  <Puerto para aceptar al Servidor Central YYY>
   vcUser <nombre máquina Servidor Central> <Puerto para acceder al Servidor Central XXX>
    vcAdmin <nombre máquina Servidor Central> <Puerto para acceder al Servidor Central ZZZ>

    Archivos Relacionados: videos.txt

Descripción


Obs. En esta figura vc aparece como cv.

El escenario asume que el servidor central corre practicamente en forma permanente. Escucha conexiones en dos puertos (XXX  y ZZZ). En XXX acepta conexiones de usuarios que llegan desde computadores remotos usando el cliente vcUser. El Servidor central también recibe conexiones desde el cliente vcAdmin. Por otro lado existe un número de Servidores de Recepción de Videos vcVRS corriendo en otros lugares. Todas las conexiones son TCP.

    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 indicado por el usuario. El servidor responde si la programación pudo o no ser satisfecha. Queda implicito que vcUser envie 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.

El servidor obtiene la información inicial del registro de videos (archivo videos.txt) y de las modificaciones hechas por el administrador. El administrador es quien ejecuta el cliente vcAdmin. Esta aplicación se conecta al servidor central y nos permite:
1.- 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).
2.- Remover un video del sistema.

La función de vcVRS es esperar por conexiones desde el servidor central y recibir los videos preprogramados. Éstos se almacenan en el directorio actual para vcVRS (aquel desde donde se ejecutó). Una vez trasferido el video desde el servidor central al los servidores vcVRS, el servidor central envia un correo al usuario solicitante 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>

El diseñador y programdor de esta tarea es libre de utilizar el algoritmo de satisfaccion de los requerimiento que mejor estime conveniete. Lo fundamental es tener un sistema que funcione aun con un algoritmo de itineracion de solicitudes simple.

 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 practica pueda ser de mucho menor duración.