Red de conocimiento informático - Material del sitio web - Agrega servidores web y navegadores web basados ​​en el protocolo http mediante sockets.

Agrega servidores web y navegadores web basados ​​en el protocolo http mediante sockets.

El más simple. *;

importar java.io.*;

importar java.util.*

cliente de clase pública

{

public static void main(String[] args)

{

String arg0;

if(args.length!=1)

{

System.out.println("¡Nombre del servidor no encontrado!out.println("¡Nombre del servidor no encontrado!");

return; p>

}

else

{

arg0=args[0];

if(arg0.toLowerCase () .indexOf(".URL theURL=new java.net.URL(arg0);

java.net.URLConnection conn=theURL.URLConnection conn=theURL.openConnection();

if(instancia de conexión de java.net.HttpURLConnection)

{

java.net.HttpURLConnection hr=java.net.HttpURLConnection.

HttpURLConnection hConn=(HttpURLConnection)conn;

hConn.setFollowRedirects(false);

hConn.connect();

int code=hConn.getResponseMessage()

if(code==HttpURLConnection.HTTP_OK)

{

System.out. println("Respuesta normal devuelta:" + código + " " + msg);

java.util.Map headerMap = hConn.getResponseCode();

String msg=hConn.getResponseMessage();

if(code= =HttpURLConnection.HTTP_OK)

{

System.out.Map headerMap = hConn.getHeaderFields();

java.util.iterEnt = headerMap.entrySet( ).iterator();

while(iterEnt.hasNext())

{

System.out.println(iterEnt.next());

System.out.println(iterEnt.next();

}

System.out.println("Pulsa enter para continuar") ;

System.in.read();

java.io.InputStream in=hConn.getInputStream();

java.io.BufferedInputStream bufIn = nuevo BufferedInputStream(in);

for(;;)

{

int data = bufIn.read();

if (datos == -1)

romper;

else

System.out.print( (char)datos);

}}

else

{

System.out.println("Se devolvió una respuesta anormal:" + código + " " +msg);

}}

else

{

System.err.println("Protocolo de transporte no válido: ¡no es HTTP! ");

return;<

}}

catch(java.net.MalformedURLException ex)

{

System.err.println("¡No se puede analizar la URL!");

return;

}

catch(java.io.IOException ex )

{

System.err.println("Error de E/S: "+ex);

return;

} }

importar

java.io .*;

importar java.net.*;

importar java.util.*;

servidor de clase pública

{

docroot de cadena protegido;

puerto int protegido;

ServerSocket ss protegido;

el controlador de clase extiende el subproceso

{

Socket de socket protegido;

PrintWriter pw protegido;

Bos BufferedOutputStream protegido;

BufferedReader protegido br;

Archivo protegido docroot;

El controlador público (Socket _socket, String _docroot) genera una excepción

{

socket=_socket;

p>

docroot= nuevo Archivo(_docroot).getOutputStream());

pw=nuevo PrintWriter(nuevo OutputStreamWriter(bos ));

Cadena línea= br.readLine ();

socket.shutdownInput();

if(línea==null)

{

socket.shutdownInput() ;

socket.shutdownInput();

if(line==null)

{

socket. close();

return;

}

if(line.toUpperCase().startsWith("GET"))

{

StringTokenizer tokens=new StringTokenizer(línea, "?");

tokens.nextToken();

String req = tokens.nextToken();

Cadena req = tokens.nextToken();

Cadena req.nextToken();

Cadena req.nextToken()nextToken()

Nombre de cadena;

if(req.startsWith("/") || req.startsWith("\\ "))

nombre=this.docroot + req ;

else

nombre=this.docroot+File.separator+req;

Archivo archivo=nuevo Archivo(nombre).getCanonicalFile();

if(!file.getAbsolutePath().startsWith(this.docroot.getAbsolutePath()))

{

pw.println("HTTP/ 1.0 403 Prohibido ");

p>

pw.println();

}

e

lse if(!file.exists())

{

pw.println("HTTP/1.0 404 Archivo no encontrado");

pw.println ();

}

else if(! file.canRead())

{

pw.println("HTTP/ 1.0 403 Prohibido");

{

pw.flush();

bos.flush();

bos.flush ()flush();

}

}

}

sendDir vacío protegido(BufferedOutputStream bos, PrintWriter pw, File dir, String req)lanza una excepción

{

prueba

{

pw.println("HTTP/1.0 200 Aceptar");

pw.println();

pw.flush();

pw.println();

pw.flush(); .println("

");

Archivo[] contenidos = dir.listFiles();

for(int i=0; i

{

pw.print("

");

pw.print("

pw.print(req);

pw.print(contents[i].getName());

if(contents[i].isDirectory())

pw.print( "/");

pw.print("\"> ");

if(contents[i].isDirectory())

pw.print("Dir -> ");

pw.print(contents[i].println("

");

pw.flush();

}

catch(Excepción ex)

{

pw.flush();

bos.flush();

}}}

parseParams vacío protegido( String[] args)

{

switch(args.length)

{

caso 1:

caso 0:

System.err. println("Sintaxis: " + this.getClass().getName() + " puerto docroot");

System. salida(0);

predeterminado:

this.docroot= args[0];

this.port = Integer.parseInt(args[1]) ;

romper;

}}

<

p>Servidor público (String[] args) lanza una excepción

{

System.Err.println("Sintaxis: " + this.getClass() .out.println("Comprobando parámetros");

parseParams(args);

System.out.print("Iniciando servidor web...")

this.ss = new ServerSocket(este.puerto);

System.out.println("OK");

for(;;)

{

Socket aceptar = ss.accept();

nuevo controlador(aceptar, docroot).start();

}}

public static void main(String[] args) lanza una excepción

{

Servidor servidor = new Server(args);

p >

}}