PRÁCTICA OPTATIVA 1: SERVIDOR WEB MULTITHREAD - NET16
PRÁCTICA OPTATIVA 1: SERVIDOR WEB MULTITHREAD - NET16
PRÁCTICA OPTATIVA 1: SERVIDOR WEB MULTITHREAD - NET16
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
PARTE 1<br />
Práctica 1: Introducción a Wireshark Redes de Ordenadores<br />
A través de los siguientes pasos desarrollarás el código del servidor web, habrá algunos detalles que deberás<br />
escribir tu.<br />
Nuestra primera implementación será multithread, donde el proceso de cada petición entrante se hará en un<br />
thread de ejecución separado. Esto permite que el servidor tenga múltiples clientes en paralelo o que envíe<br />
varios ficheros simultáneos al mismo cliente. Cuando se crea un thread de ejecución es necesario pasarle al<br />
constructor una instancia de una clase que implemente la interfaz Runnable. Esta es la razón por la que se crea<br />
una clase separada llamada HttpRequest. La estructura de este servidor se muestra en el código 1:<br />
Importjava.io.* ;<br />
import java.net.* ;<br />
import java.util.* ;<br />
public final class WebServer {<br />
public static void main(String argv[]) throws Exception {<br />
. . .<br />
}<br />
}<br />
final class HttpRequest implements Runnable {<br />
. . .<br />
}<br />
Código 1: estructura del servidor<br />
Normalmente los servidores web atienden a sus peticiones a través del puerto 80. En este caso puedes escoger<br />
cualquier puerto a partir del 1024 (para elegir puertos menores es necesario tener permisos de administrador).<br />
Debes recordar el puerto para hacer peticiones desde tu navegador web.<br />
Lo siguiente que hay que hacer es abrir un socket y dejarlo esperando a que llegue una conexión TCP,<br />
queremos que el servidor esté constantemente funcionando y por ello ponemos un bucle infinito, esto significa<br />
que para cerrar el servidor habrá que teclear ctrl+c, se puede ver la idea en el código 2.<br />
public static void main(String argv[]) throws Exception {<br />
// Set the port number.<br />
int port = 6789;<br />
}<br />
// Establish the listen socket.<br />
. . .<br />
// Process HTTP service requests in an infinite loop.<br />
while (true) {<br />
// Listen for a TCP connection request.<br />
. . .<br />
}<br />
Código 2: programa principal<br />
- 2 -