Agrega servidores web y navegadores web basados en el protocolo http mediante sockets.
importar java.io.*;
importar java.util.*
cliente de clase pública
{ p>
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> 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>
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(); p>
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("
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(" |