Chefkoch333
Erfahrenes Mitglied
Hi Forum,
ich schreibe gerade ein "Proxy" Programm. Dabei gibt es eine Client und eine Server Komponente. Der Client dient lokal als Proxy. Dieser nimmt Anfragen entgegen wrapped diese in ein anderes Protokol und schickt dieses Paket an den Server. Der Server kommuniziert dann mit dem eigentlichen Ziel Host und liefert die Antwort wiederrum an den Client zurück.
Request:
Browser -> ProxyClient -> ProxyServer -> TargetHost
Protocol: HTTP -> ProxyProtocol -> HTTP
Response:
TargetHost -> ProxyServer -> ProxyClient -> Browser
Protocol: HTTP -> ProxyProtocol -> HTTP
Das HTTP wird als ByteArray gewrapped. Ziel sollte sein das die Kommunikation über den Proxy für Browser und TargetHost total transparent ist.
Soweit die Theorie. Dies funktioniert soweit auch schon, bis auf den letzten Schritt der Kommunikation der Antwort vom ProxyClient -> Browser.
Die HTTP-Antwort liegt im ProxyClient vollständig als ByteArray vor. Wenn ich diese aber an den Browser über den Socket-OutputStream schicke kommt scheinbar nur ca. 2/3 der Antwort im Browser an.
Natürlich Flushe ich den Stream das nützt allerdings nichts.
Es sieht so aus als würde der Browser auf irgentwas warten, obwohl ja eigentlich alles vollständig übertragen wurde. Gibt es beim HTTP ein EOT flag o.ä.?
Ich verstehe nicht was das Problem ist...
ich schreibe gerade ein "Proxy" Programm. Dabei gibt es eine Client und eine Server Komponente. Der Client dient lokal als Proxy. Dieser nimmt Anfragen entgegen wrapped diese in ein anderes Protokol und schickt dieses Paket an den Server. Der Server kommuniziert dann mit dem eigentlichen Ziel Host und liefert die Antwort wiederrum an den Client zurück.
Request:
Browser -> ProxyClient -> ProxyServer -> TargetHost
Protocol: HTTP -> ProxyProtocol -> HTTP
Response:
TargetHost -> ProxyServer -> ProxyClient -> Browser
Protocol: HTTP -> ProxyProtocol -> HTTP
Das HTTP wird als ByteArray gewrapped. Ziel sollte sein das die Kommunikation über den Proxy für Browser und TargetHost total transparent ist.
Soweit die Theorie. Dies funktioniert soweit auch schon, bis auf den letzten Schritt der Kommunikation der Antwort vom ProxyClient -> Browser.
Die HTTP-Antwort liegt im ProxyClient vollständig als ByteArray vor. Wenn ich diese aber an den Browser über den Socket-OutputStream schicke kommt scheinbar nur ca. 2/3 der Antwort im Browser an.
Natürlich Flushe ich den Stream das nützt allerdings nichts.
Es sieht so aus als würde der Browser auf irgentwas warten, obwohl ja eigentlich alles vollständig übertragen wurde. Gibt es beim HTTP ein EOT flag o.ä.?
Ich verstehe nicht was das Problem ist...