# Client Socket neu instanzieren ?



## mOSSpOWER (25. Sep 2004)

Ich muss mir jeden Tag Daten von max. 50 webseiten holen, die alle auf dem gleichen Webserver liegen. Nun erschien es mir relativ langsam, hier das URL object zu benutzen, also testete ich die Klasse socket. Musste aber bedauerlicherweise feststellen, dass ich immer dann, wenn ich die erste Seite gelesen hatte, keine weiteren lesen konnte, obwohl das socket connected und open ist. Muss ich denn für jede Seite ein eigenes Socket verwenden - das kann ich mir nicht vorstellen. Wenn ich dass jedoch mache, habe ich trotzdem einen Performancegewinn von 10 % gegenüber dem URL Objekt. Kann mir hier jemand helfen ? Ich denke, dass ich hier einen ziemlichen Anfängerfehler mache, da ich mir nicht vorstellen kann, jedes mal eine neue Socket instanz zu generieren - wäre ja blödsin. Habe es schon mit mehreren Sachen probiert (keepAlive ect.) - funzt aber nicht. Socket isKeepAlive, connected und open ... ich kann es mir einfach nicht erklären.
Code sieht wie folgt aus.


```
Date timeStart = new Date(System.currentTimeMillis());
Socket socket = new Socket("217.12.5.42", 80);

BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter bufferedWriter1 = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);

bufferedWriter1.write("GET /q?s=" + "665510.DE" + "&d=t HTTP/1.0\r\n\r\n");
bufferedWriter1.flush();

int c = -1;

while((c = bufferedReader1.read()) != -1) {
System.out.print((char)c);
}

// Bis hierher funktioniert alles praechtig, jedoch wenn ich nun weiterschreiben möchte, bekomme ich zwar keine Fehlermeldung, jedoch beim lesen bekomme ich immer -1

bufferedWriter1.write("GET /q?s=" + "XYZ.DE" + "&d=t HTTP/1.0\r\n\r\n");
bufferedWriter1.flush(); 

// Hier ist nun immer die -1 beim Lesen
```

Kann mir hier jemand helfen, tausend dank schon mal im Voraus.

Gruß

mOSSpOWER


----------



## Roar (25. Sep 2004)

ein http socket wird vom webserver geschlossen wenn die daten transferiert worden sind, also musst du einen neuen erstellen.

PS: schonmal was von methoden oder schleifen gehört? ich würd ja nich 10mal den selben code hintereinander schrieben


----------



## mOSSpOWER (25. Sep 2004)

Wow, das ging aber schnell - danke für die Antwort. Dann muss ich halt hier jedesmal neu instanzieren. Danke für den Hinweis für die Methoden und Schleifen ... :lol: Es war nur ein Codeschnipsel zum Testen. 
Gruß

mOSSpOWER


----------



## Roar (25. Sep 2004)

mOSSpOWER hat gesagt.:
			
		

> Es war nur ein Codeschnipsel zum Testen.



das hab ich auch gehofft *gg*


----------

