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

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...