Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema Java sockets

Hola a todos,

Tengo un problema con un proxy que estoy escribiendo en Java, resulta que no sé cómo hacer para que el socket devuelva al navegador la página web una vez que ha sido analizada para ver si tiene que ser bloqueada o no, lo único que puedo mostrar por el momento es un texto, pero no la web que es lo que me interesa...

Aquí os paso el código:

try {

String url = null;
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));


String s;
while ((s = in.readLine()) != null) {
if (s.contains("Host:")) {
url=s.replace("Host: ", "").toString().trim();
System.out.print(url);
System.out.print("\n");
}
//System.out.println(s);
if (s.isEmpty()) {
break;
}
}

out.write("HTTP/1.0 200 OK\r\n");
out.write("Date: Fri, 31 Dec 1999 23:59:59 GMT\r\n");
out.write("Server: Apache/0.8.4\r\n");
out.write("Content-Type: text/html\r\n");
out.write("Content-Length: 57\r\n");
out.write("Expires: Sat, 01 Jan 2000 00:59:59 GMT\r\n");
out.write("Last-modified: Fri, 09 Aug 1996 14:21:40 GMT\r\n");
out.write("\r\n");
out.write("<TITLE>Ejemplo</TITLE>");
out.write("<P>"+url+"</P>");


out.close();
in.close();

clientSocket.close();

No sé si hay algún HTTP header que no conozca y que me pudiera servir de ayuda...
Gracias.

noviembre 15, 2013 | Unregistered CommenterDavid

Guenas.

Si lo que quieres es controlar lo que se mueve de un lado a otro lo que deberias es montar algo asi como un tunel. Es decir, tu "proxy" debería abrir la conexión con destino, leer lo que haya, y devolverlo al origen. Eso significa usar hilos para que vayan leyendo y mandando. Si haces esto tu no deberías hacer nada de http. Ya se encargaría el destino de devolver lo que toca y tu solo harías de puente, leyendo de un lado y enviando lo que leyeras al otro.

Otra cosa que quizá funcione, pero no tengo ni idea de como, es devolver una redirección, es decir la cabecera, que no se cual es pero fijo que existe, que indica al origen que su llamada debe redireccionarse. Busca info sobre http para ello.

Un saludo

noviembre 16, 2013 | Unregistered CommenterPaposo