08.05.2013 Views

PRÁCTICA OPTATIVA 1: SERVIDOR WEB MULTITHREAD - NET16

PRÁCTICA OPTATIVA 1: SERVIDOR WEB MULTITHREAD - NET16

PRÁCTICA OPTATIVA 1: SERVIDOR WEB MULTITHREAD - NET16

SHOW MORE
SHOW LESS

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 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!