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:
| 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:
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.