Tarea 3
Fecha de entrega: 29 de Noviembre de 2001
Objetivo
Familiarizarse con la transmisión de archivos ejecutables a través de sockets.
Trabajo Solicitado
Un par de programas en C que creen 2 procesos, en diferentes estaciones de
trabajo Linux, y permitan
la comunicación entre los mismos por medio de sockets.
En una máquina el proceso actuará como servidor y esperará solicitudes de
conexión de la otrá.
Cuando reciba una solicitud de conexión, enviará al cliente un archivo, el
cliente supondrá que
dicho archivo es ejecutable y creará un proceso que lo ejecute.
Para esto lo almacenará en un archivo, lo marcará como ejecutable y lo
ejecutará.
El servidor esperará 10 segundos y enviará otro archivo, cuando el cliente
reciba un nuevo archivo
terminará el proceso que ejecuta el archivo anterior y creará uno nuevo para
el nuevo archivo.
A su vez el cliente actuará como servidor creando un socket local y si recibe
una solicitud de conexión
cerrará la conexión con el servidor remoto y terminará el proceso que esté
ejecutando el último
archivo recibido, desplegara un mensaje de aviso y terminará.
Para probar que funciona correctamente el servido enviará varios programas que
desplieguen diferentes
mensajes en pantalla, los cuales se ejecutaran por 10 segundos, finalmente
enviará un programa que
intente conectarse al socket local, lo cual hará que se despliegue el
mensaje de terminación y finalice
el cliente. El proceso de la máquina servidora seguira funcionando en espera de
nuevas solicitudes.
Para probar esto, se puede ejecutar nuevamente el servidor y el proceso debe
repetirse sin tener que
ejecutar nada nuevo en el servidor.
Nota: el servidor sólo atenderá otra solicitud, hasta que se cierre la
conexión de la anterior, lo cual
sucede después de enviar el archivo que produce la terminación. Esto significa
que no atenderá dos
máquinas simultaneamente, si llega una solicitud cuando esta atendiendo otra,
la nueva tendrá que esperar
a que termine con la anterior.