0% encontró este documento útil (0 votos)
126 vistas3 páginas

Ser Vidor HTTP

Este documento presenta un servidor HTTP escrito en Java que atiende peticiones de tipo GET en el puerto 8066. El servidor crea un socket para cada cliente y procesa las peticiones recibidas, devolviendo diferentes páginas HTML en función de la URL solicitada. Si la petición es para la página de inicio o "/quijote", devuelve el contenido correspondiente. En caso contrario, devuelve una página de error.

Cargado por

fayensa
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
126 vistas3 páginas

Ser Vidor HTTP

Este documento presenta un servidor HTTP escrito en Java que atiende peticiones de tipo GET en el puerto 8066. El servidor crea un socket para cada cliente y procesa las peticiones recibidas, devolviendo diferentes páginas HTML en función de la URL solicitada. Si la petición es para la página de inicio o "/quijote", devuelve el contenido correspondiente. En caso contrario, devuelve una página de error.

Cargado por

fayensa
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

C:\Documents and Settings\AAF007\Configuracin local\Temp\Directorio temporal 3 para PSP05_CONT_R40_ServerHTTP (1).

zip\PSP05_CONT_R40_ServidorHTTP\Serve lunes, 25 de febrero de 2013 18:10

package PaquetePrincipal ; import import import import import import java.io.BufferedReader ; java.net.Socket; java.io.IOException; java.io.InputStreamReader ; java.io.PrintWriter; java.net.ServerSocket;

/** * ***************************************************************************** * Servidor HTTP que atiende peticiones de tipo 'GET' recibidas por el puerto * 8066 * * NOTA: para probar este cdigo, comprueba primero de que no tienes ningn otro * servicio por el puerto 8066 (por ejemplo, con el comando 'netstat' si ests * utilizando Windows) * * @author IMCG */ class ServidorHTTP { /** * ************************************************************************** * procedimiento principal que asigna a cada peticin entrante un socket * cliente, por donde se enviar la respuesta una vez procesada * * @param args the command line arguments */ public static void main(String[] args) throws IOException, Exception { //Asociamos al servidor el puerto 8066 ServerSocket socServidor = new ServerSocket(8066); imprimeDisponible (); Socket socCliente; //ante una peticin entrante, procesa la peticin por el socket cliente //por donde la recibe while (true) { //a la espera de peticiones socCliente = socServidor.accept(); //atiendo un cliente System.out.println("Atendiendo al cliente " ); procesaPeticion (socCliente); //cierra la conexin entrante socCliente.close(); System.out.println("cliente atendido" ); }

/** ***************************************************************************** * procesa la peticin recibida * * @throws IOException */ private static void procesaPeticion (Socket socketCliente ) throws IOException {
-1-

C:\Documents and Settings\AAF007\Configuracin local\Temp\Directorio temporal 3 para PSP05_CONT_R40_ServerHTTP (1).zip\PSP05_CONT_R40_ServidorHTTP\Serve lunes, 25 de febrero de 2013 18:10

//variables locales String peticion; String html; //Flujo de entrada InputStreamReader inSR = new InputStreamReader ( socketCliente .getInputStream ()); //espacio en memoria para la entrada de peticiones BufferedReader bufLeer = new BufferedReader (inSR); //objeto de java.io que entre otras caractersticas, permite escribir //'lnea a lnea' en un flujo de salida PrintWriter printWriter = new PrintWriter( socketCliente .getOutputStream (), true); //mensaje peticin cliente peticion = bufLeer.readLine(); //para compactar la peticin y facilitar as su anlisis, suprimimos todos //los espacios en blanco que contenga peticion = peticion.replaceAll(" ", ""); //si realmente se trata de una peticin 'GET' (que es la nica que vamos a //implementar en nuestro Servidor) if (peticion.startsWith("GET")) { //extrae la subcadena entre 'GET' y 'HTTP/1.1' peticion = peticion.substring(3, peticion.lastIndexOf("HTTP")); //si corresponde a la pgina de inicio if (peticion.length() == 0 || peticion.equals("/")) { //sirve la pgina html = Paginas.html_index; printWriter.println(Mensajes.lineaInicial_OK ); printWriter.println(Paginas.primeraCabecera ); printWriter.println("Content-Length: " + html.length() + 1); printWriter.println("\n"); printWriter.println(html); } //si corresponde a la pgina del Quijote else if (peticion.equals("/quijote")) { //sirve la pgina html = Paginas.html_quijote; printWriter.println(Mensajes.lineaInicial_OK ); printWriter.println(Paginas.primeraCabecera ); printWriter.println("Content-Length: " + html.length() + 1); printWriter.println("\n"); printWriter.println(html); } //en cualquier otro caso else { //sirve la pgina html = Paginas.html_noEncontrado ; printWriter.println(Mensajes.lineaInicial_NotFound ); printWriter.println(Paginas.primeraCabecera ); printWriter.println("Content-Length: " + html.length() + 1); printWriter.println("\n"); printWriter.println(html); }
-2-

C:\Documents and Settings\AAF007\Configuracin local\Temp\Directorio temporal 3 para PSP05_CONT_R40_ServerHTTP (1).zip\PSP05_CONT_R40_ServidorHTTP\Serve lunes, 25 de febrero de 2013 18:10

/** * ************************************************************************** * muestra un mensaje en la Salida que confirma el arranque, y da algunas * indicaciones posteriores */ private static void imprimeDisponible () { System.out.println("El Servidor WEB se est ejecutando y permanece a la " + "escucha por el puerto 8066.\nEscribe en la barra de direcciones " + "de tu explorador preferido:\n\nhttp://localhost:8066\npara " + "solicitar la pgina de bienvenida\n\nhttp://localhost:8066/" + "quijote\n para solicitar una pgina del Quijote,\n\nhttp://" + "localhost:8066/q\n para simular un error" );

-3-

También podría gustarte