Obligatorio2 2017
Obligatorio2 2017
Obligatorio2 2017
Redes de Computadoras
Obligatorio 2 - 2017
Facultad de Ingeniería
Instituto de Computación
Departamento de Arquitectura de Sistemas
Introducción
Forma de entrega
Una clara, concisa y descriptiva documentación es clave para comprender el trabajo realizado. La
entrega de la tarea consiste en un único archivo obligatorio2GrupoGG.tar.gz que deberá
contener los siguientes archivos:
Fecha de entrega
Los trabajos deberán ser entregados antes del 08/10/2017 a las 23:30 horas. No se aceptará
ningún trabajo pasada la citada fecha y hora. En particular, no se aceptarán trabajos enviados por
e-mail a los docentes del curso.
Página 1 de 4
Redes de Computadoras Obligatorio 2 - 2017
Problema a resolver
Se desea implementar un servicio de transmisión de video en línea (streaming) para usuarios en
Internet. El mismo utilizará los protocolos TCP y UDP y buscará distribuir el video entre todos los
clientes conectados simultáneamente. Además, se desea contar con una aplicación cliente para
reproducir los videos recibidos.
El servidor es la aplicación que permite hacer streaming de video. Este servicio tiene la capacidad
de realizar la transmisión utilizando el protocolo TCP o UDP.
Para el caso de TCP, el servidor acepta conexiones TCP en una dirección IP y puerto conocidos.
Por cada conexión se realiza el streaming leyendo los datos a enviar desde una cámara web (o un
archivo de video).
El streaming hacía un cliente finaliza cuando el cliente cierra la conexión.
Para el protocolo UDP el servidor espera por un mensaje de solicitud en una dirección IP y puerto
conocidos y realiza el streaming hacia el cliente que hizo el pedido leyendo los datos a enviar
desde una cámara web (o un archivo de video).
El cliente debe renovar la solicitud del streaming cada 30 segundos y el servidor debe finalizar la
transmisión del video a un cliente si no ha recibido solicitudes por mas de 90 segundos.
El cliente realizará la reproducción de los streams recibidos. Para esto permitirá al usuario
seleccionar el servicio TCP o UDP. Luego de seleccionada la opción el cliente se conecta al
servidor y queda leyendo el stream, reproduciendo el video en pantalla.
Para el caso UDP el cliente debe renovar su suscripción con el servidor cada 30 segundos.
Se pide
a) Implemente el servidor y el cliente en un lenguaje de alto nivel a su elección.
Deberá definir el mensaje de suscripción para el caso UDP.
Para el caso UDP puede asumir que el tamaño de un frame de video es siempre menor
que el tamaño máximo de un segmento UDP.
Recuerde que la API de sockets TCP no es basada en mensajes sino en streams. Deberá
tener esto en cuenta para el envío de los frames de video.
Para la reproducción de video se utilizará la bilbioteca OpenCV [1]. Esta biblioteca esta disponible
para C/C++, Java y Python. En el Anexo se describen las funciones mínimas necesarias de
OpenCV que deberá utilizar (para el lenguaje C++).
Se recomienda también revisar y utilizar como base el código de ejemplo de uso de sockets dado
en el curso.
Página 2 de 4
Redes de Computadoras Obligatorio 2 - 2017
namedWindow("cliente", CV_WINDOW_AUTOSIZE);
cmake .
make
Tenga en cuenta que seguramente será necesario instalar la bilbioteca OpenCV y la herramienta
cmake en su sistema operativo.
Por ejemplo, para instalar OpenCV en un SO tipo Debian debe hacer:
Se sugiere utilizar el SO Ubuntu o Lubuntu en sus últimas versiones. Si no cuenta con uno, puede
crear una máquina virtual descargando la imagen de Lubuntu en [3].
Página 4 de 4