Emulierter Browser

thomy800

Erfahrenes Mitglied
Hi,
Ich versuche mich gerade an einem Programm, welches ähnlich wie ein Browser arbeiten soll. Dafür möchte ich erstmal den Quelltext von einer beliebigen Seite ziehen um mit dem dann weiter arbeiten zu können.
Dazu habe ich folgendes geschrieben:

import java.net.*;
import java.io.*;
public class Quelltext{
public static String Host;
public static String Seite;
public Quelltext(String Adresse) {
if (Adresse.substring(0,Adresse.indexOf("//")>0?Adresse.indexOf("//"):Adresse.length()).equals("http:")) Adresse=Adresse.substring(Adresse.indexOf("//")+2,Adresse.length());
Host=Adresse.substring(0,Adresse.indexOf("/"));
Seite=Adresse.substring(Adresse.indexOf("/"),Adresse.length());
}
public String getText() {
String r="";
try {
Socket sock = new Socket(Host, 80);
OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
//GET-Kommando senden
String s = "GET " + Seite + " HTTP/1.0" + "\r\n\r\n";
out.write(s.getBytes());
//Ausgabe lesen und anzeigen
int len;
byte[] b = new byte[100];
while ((len = in.read(b)) != -1) {
System.out.write(b);
//r+=new String(b); <-- wenn das aktiv ist, kommt die Endlosschleife
}
//Programm beenden
in.close();
out.close();
sock.close();
} catch (IOException e) {
System.err.println(e.toString());
r=null;
}
return r;
}
public static String Adresse() {
return Host+Seite;
}
public static void main(String[] args){ //nur zum testen
System.out.println((new Quelltext("HTML-Seite")).getText());
System.out.println("\n==>"+Adresse()+"\n");
}
}

Das Problem ist hierbei in der While-Schleife. Die funktioniert nur richtig wenn auf dem Bildschirm geschrieben wird. wenn ich allerdings nur r+=new String(b); reinschreibe, dann landet das ganze in einer Endlosschleife (Also, wenn ich mir das zusätzlich auf den Bildschirm schreiben lasse, sieht man, dass der Quelltext immer wieder von vorne geschrieben wird) . Ich brauche aber wiegesagt später noch den String. Wie kann ich das lösen?

MfG Thomy
 
Zurück