Practico 3 Ejercicio 3

Practico 3 Ejercicio 3

de Nicolas Vidal Morresi -
Número de respuestas: 2

Buenas, me estaba fijando la solucion de este ejercicio y no logro comprender por que en la funcion streamer se usa fd: write(buff). Supongo que lo que hace es "escribir" en el socket los datos leidos desde el archivo. No se podria usar la operacion "sendto" para sockets UDP de la cartilla en su lugar?



En respuesta a Nicolas Vidal Morresi

Re: Practico 3 Ejercicio 3

de Martin Giachino -
Nicolás, este es el típico ejemplo de una aplicación que mantiene un plano de control y plano de datos por separado.

El plano de control es que mediante UDP, anuncia de forma periódica en dónde acepta el stream por TCP del video.

Por otro lado, el video le es enviado por una conexión TCP (plano de datos) y por ende se utiliza una primitiva de TCP para ese envío.

Entonces la respuesta es que no, no podes usar sendto para enviar el video por TCP.

Quizás lo que te confunde es que la primitiva write, y en su lugar si se podría utilizar la send de tcp, que sí está en la cartilla (no recuerdo si ese año del exámen la cartilla que tenemos ahora existía).

Martín
En respuesta a Martin Giachino

Re: Practico 3 Ejercicio 3

de Jorge Visca -
Exacto. La letra dice que el stream es sobre TCP, y como verás el socket que se le pasa a hilo streamer es TCP. Por lo tanto, las llamadas que tenes disponibles sobre ese objeto son las que corresponden a TCP.

En cuanto al nombre de las llamadas, es como dice Martín. En un mundo ideal probablemente las llamadas sobre UDP se llamarían "send" y "receive" y las de TCP "write" y "read", porque eso es lo que se pare más a lo que realmente hace: UDP envía datagramas, TCP escribe en un stream contínuo. Pero ya llegamos tarde para eso.