# Proxy und mehrere Verbindungen



## Guest (11. Apr 2007)

Hi Leute!

Ich bin neu hier, aber arbeite schon bisschen länger mit Java, allerdings bin ich Netzwerkprogrammierung noch etwas unerfahren. Mein Problem ist folgendes: ich bau eine Verbindung zu einem Proxy auf über ein Socket und sende diesem eine ganz normale HTTP-Anfrage, hole mir das Ergebnis und gut ist. Dafür hab ich mir eine Klasse mit den Methoden open(), setQuery(), getResponse() geschrieben. Soweit so gut. Jetzt will ich aber nicht für jede Anfrage eine neue Verbindung zum Proxy aufbauen, das halte ich einfach nicht für sinnvoll. Deshalb dachte ich mir, es muss ja gehen, wenn ich erst setQuery() aufrufe, dann getResponse(), dann wieder setQuery(), getResponse(), usw. etc. pp. 
Allerdings funktioniert das nicht, die zweite Ausgabe bleibt einfach leer. 

Kurz die Funktionen:

open(): stellt Verbindung mit Proxy her, speichert OutputStream in Variable out, speichert InputStream in Variable in.

setQuery(): setzt eine Anfrage via out.write() und ruft out.flush() auf

getResponse(): liest den inputStream (in) ein und gibt das Ergebnis in einem StringBuffer zurück.

Muss ich irgendwas beachten? Geht das mit einem Proxy vielleicht nicht? Wenn ich mir selbst einen ServerSocket baue, muss ich ja nach jeder Anfrage dem Server sagen, dass er weiterhin Anfragen akzeptieren soll, da er sonst ja nur eine Anfrage / Verbindung akzeptiert. Ist das bei einem Proxy auch der Fall? Muss ich quasi für jede Anfrage eine eigene Verbindung aufbauen? Weil das ist nicht gerade performant... 

Danke & viele Grüße,
Martin


----------



## meez (11. Apr 2007)

So ist halt das Protokoll....jede Anfrage eine eigene Verbindung...


----------



## mad-din (11. Apr 2007)

Hm,

nicht ganz. Es gibt ja im HTTP-Protokoll die Möglichkeit den Parameter "Connection: Keep-Alive" einzusetzen, der die Verbindung erhält und so auch mehrere Anfragen zulässt, sofern der Server das unterstützt (was in meinem Fall zutrifft). Ich denke mal, dass es an meiner Implementierung liegt. Muss man irgendwas Besonderes beachten, wenn man eine Anfrage an einen Server - egal was für ein Server das ist - schickt, sich die Antwort holt und eine erneute Anfrage senden will? 

Viele Grüße,
Martin


----------



## AlArenal (11. Apr 2007)

Zunächst einmal muss auch der Proxy KeepAlive unterstützen. Ob dein Client das kann sagt dir vermutlich die Doku.


----------



## mad-din (11. Apr 2007)

Hi!

Mein Proxy kann das, das hab ich eben getestet. Ob der Server im Internet das auch kann ist mir egal, es geht mir nur um den Proxy. Mein Client müsste das auch können, was sollte dagegen sprechen? Ich baue ja eine Verbindung über ein Socket auf und schick in meinem HTTP-Header "Connection: Keep-Alive" mit. Oder muss ich nach out.write() irgendwas freigeben, damit erneute Anfragen gesendet werden können?

Angenommen ich baue mir einen stinknormalen Socketserver, der auf Port 3200 lauscht. Bau dann eine Socket-Verbindung mit dem Server auf. Da kann ich doch auch ohne Weiteres mehrere Anfragen senden.

Danke & viele Grüße,
Martin


----------

