I Tarea Programada - Servidor Web

El objetivo de esta tarea es entender con una mayor profundidad el protocolo HTTP según el documento http://www.w3.org/Protocols/rfc2616/rfc2616.html.

Esta tarea consiste en programar un servidor HTTP capaz de responder a solicitudes HTTP.

Se deberán programar los siguientes métodos:

Además se deberán apoyar los siguientes encabezados:

El servidor deberá ser capaz de responder con los siguientes códigos de retorno: 200, 404, 406.

El servidor debe ser programado con sockets. No se puede utilizar ninguna biblioteca HTTP. Alternativamente, cualquier lenguaje que tenga las funcionalidades de sockets puede ser utilizado, V.G.: Perl, Java, C, C++, PHP, ... Se recomienda utilizar un lenguaje de alto nivel como Perl o Java.

Muy probablemente para que su servidor sea eficiente deberá utilizar programación concurrente:

for(i=0; i<procs; i++)
{
  if (!fork())
  {
    // servir solicitudes HTTP

  }

}

El servidor deberá funcionar tanto en Windows como Unix.

Tenga cuidado con el procesamiento de archivos binarios como las imágenes. Muy probablemente su servidor tendrá que manejar una lista de Mime Types.

Para verificar el procesamiento que haga su servidor habrá una bitácora con información como la siguiente:

Bitácora del Servidor
Método Estampilla de Tiempo URL Datos
GET 14414378 /  
GET 14415357 /imagen.gif  
HEAD 14421357 /  
GET 14423578 /busqueda.html q=desarrollo+internet
POST 14439765 /proceso.html var1=val1&...&var2=val2

 

Debe entregar un Manual de Diseño con indicaciones de cómo resolvió el problema. El manual debe contemplar los siguientes apartados y cualquier otro que usted considere necesario:

  1. Portada
  2. Tabla de Contenido
  3. Introducción
  4. Análisis del Problema
  5. Diseño de Clases (UML) o Diagramas de Flujo
  6. Casos de Prueba
  7. Resultados de los Casos de Prueba
  8. Análisis de los Resultados de las Pruebas
  9. Código Fuente impreso con su respectiva documentación interna (si es demasiado, puede entregarlo en diskette para economizar y salvar árboles)

Fecha de entrega: lunes 3 de octubre 2006 sin falta. No habrán prorrogas. Habrá una reducción de 2.5% por día natural de atraso.