Noticias Weblogs Foros Wiki Código
Sponsors:

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

PlanetaCódigo en inglés

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Gimenoblog

Un servidor HTTP en cinco minutos

Marzo 24th, 2004 - [Enlace local]

Estaba el otro día haciendo el friki con la tarjeta inalámbrica de mi portátil en la cafetaría de la universidad y un compañero también tenía un portátil con wireless. Así que montamos una red de ordenador a ordenador. Una vez conectados y verificando que podemos acceder el uno al otro pienso... voy a pasarte unos archivos. ¿Pero cómo? Tengo un ibook desde hace poco y no sabía como compartir mis archivos, así que ni corto ni perezoso le dije a mi compañero: "¡Espera que hago un servidor web!". Y aquí está el código:

import java.io.*;
import java.net.*;

public class Servidor {
    public static void main(String args[]) throws Exception {
	int port = Integer.parseInt(args[0]);
	ServerSocket ss = new ServerSocket(port);
	Socket s = null;
	System.out.println("Servidor escuchando en: "+port);
	
	while((s = ss.accept()) != null){
	    System.out.println("Conexion recibida");
	    OutputStream os = s.getOutputStream();
	    InputStream in = s.getInputStream();
	    BufferedReader br = new BufferedReader(new InputStreamReader(in));
	    String line = br.readLine();
	    int espacio;
	    espacio = line.indexOf(" ");
	    String uri = line.substring(espacio+1, line.indexOf(" ", espacio+1));
	    uri = uri.substring(1, uri.length());
	    File f = new File(uri);
	    FileInputStream fis = new FileInputStream(f);
	    os.write("HTTP/1.1 200 OK\r\n".getBytes());
	    os.write("Content-length: ".getBytes());
	    os.write((fis.available()+"").getBytes());
	    os.write("\r\n".getBytes());
	    os.write("Content-type: text/plain\r\n".getBytes());
	    os.write("\r\n".getBytes());

	    int size = fis.available();
	    for(int i=0; i<size; i++)
		os.write(fis.read());

	    os.close();
	    fis.close();
	    s.close();
	    System.out.println("peticion finalizada");
	}
    }
}

Ejecutas por ejemplo

java Servidor 8080

Y escribes por ejemplo: http://localhost:8080/Servidor.java en el navegador. Verás el propio código fuente del programa.

Voy a añadir alguna cosilla, como que liste el contenido de un dirctorio y lo mandaré a la sección "Código útil" de javaHispano.

» Leer más, comentarios, etc...