Este examen puede ser elaborado de manera individual o en parejas.
Escribe en lenguaje C un servidor de reducción de imágenes PPM (Portable PixMap) y su respectivo cliente a partir de la siguiente arquitectura:
Cliente y servidor se ejecutan como procesos independientes y se comunican entre sí usando sockets. La interacción entre ambos se describe a continuación:
El servidor debe correr de manera indefinida en su propia terminal. Debe recibir como argumento de la línea de comando el número de puerto en el que estará escuchando:
$ ./servidor_reductor 9999 Servidor de reducción de imágenes PPM Listo para recibir conexiones en el puerto 9999...
Un cliente se debe ejecutar desde otra terminal. Como argumentos de la línea de comando debe recibir:
Por ejemplo:
$ ./cliente_reductor 127.0.0.1 9999 entrada.ppm salida.ppm
El servidor acepta una nueva conexión de socket y procesa la petición del cliente en un nuevo thread. Dicho procesamiento consiste en recibir el contenido del archivo enviado por el cliente y producir una nueva imagen PPM basada en la original pero reducida a la mitad del ancho y altura. La imagen resultante se envía de regreso al cliente usando el mismo socket.
Dado que el procesamiento de la imagen ocurre en otro thread, el thread principal del servidor puede atender casi de manera inmediata cualquier nueva petición que pudiera llegar de otro cliente.
Cliente y servidor deben hacer todas las validaciones pertinentes y desplegar mensajes claros en caso de detectar cualquier tipo de error.
Todo el código que se requiere para resolver este examen fue visto en clase y/o está explicado en [GRIFFITHS]. Los principales capítulos a revisar son:
Crea un archivo tarball llamado examen3.tgz
con los archivos fuente de C, Makefile, imágenes de prueba, etc. No olvides poner los nombres de los autores en comentarios al inicio de los archivos fuente.
Se revisará en persona los programas funcionando el martes 6 de noviembre a la hora de clase. Antes de la revisión, sube el archivo tarball examen3.tgz
al Sistema de Entrega de Tareas Automatizado (SETA). Basta que una persona del equipo lo suba.
40% | Código del servidor. |
---|---|
30% | Código del cliente. |
25% | Respuesta correcta a preguntas y/o solicitud de modificaciones. |
5% | Datos de los autores en comentarios al inicio de los archivos fuente. |
DA | Si se detecta cualquier tipo de plagio o fraude. |