Construcción de un servidor web multi-hilos

En esta práctica usted debe completar el código, en lenguaje Java, para construir un servidor web. Al final se tendrá un servidor web multi-hilos (multi-threaded) con la capacidad de procesar solicitudes simultáneas en paralelo. Se considerará que la práctica ha sido concluida con éxito cuando su servidor web pueda atender las solicitudes de un browser para web. Puede utilizar como referencia el código de un servidor web simple que no es multi-hilos.


Para este servidor se implementará parcialmente la versión 1.0 de HTTP, como está definida en el RFC 1945, donde las solicitudes (request) HTTP son enviadas separadas para cada componente de la página web. El servidor debe ser capaz de manipular solicitudes de servicio simultáneas en paralelo. Esto significa que el servidor es multi-hilos (multi-threaded). En el hilo principal, el servidor escuchará por un puerto fijo. Cuando reciba una solicitud de conexión TCP, establecerá una conexión TCP a través de otro socket (socket de conexión) y atenderá la solicitud en un hilo separado. Para simplificar el proceso de programación, el código debe ser desarrollado en dos etapas. En la primera se escribirá un servidor multi-hilos que simplemente mostrará en la pantalla el contenido de la solicitud (request) HTTP que recibe. Cuando este código esté funcionando de manera correcta, usted podrá agregar, en la segunda etapa, el código requerido para generar una respuesta HTTP apropiada al browser.

A medida que usted avance en el código, puede probarlo desde un browser para web. No se utilizará el puerto 80 para ofrecer el servicio, por esto deberá incluir el número de puerto en el URL. Por ejemplo, si su máquina está identificada como www.miservidor.edu, su servidor atenderá las solicitudes a través del puerto 6789, y, suponiendo que se desea  recuperar el archivo index.html, entonces usted debe especificar el siguiente URL:

http://www.miservidor.com:6789/index.html
Cuando el servidor encuentre un error enviará un mensaje de respuesta en HTML para que sea mostrado por el browser.
  • Servidor Web en lenguaje Java: Parte I (servidor web multi-hilos que mostrará el contenido de la solicitud (request) HTTP que recibe).
  • Servidor Web en lenguaje Java: Parte II (servidor web multi-hilos que genera una respuesta HTTP apropiada).
  • Servidor web simple de ejemplo (no es multi-hilos)