tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
205
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Chefkoch333
    Chefkoch333 Chefkoch333 ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    112
    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...
     

  2. #2
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    Könntest Du den entsprechenden Code-Teil mal posten, bitte?
     

  3. #3
    Avatar von Chefkoch333
    Chefkoch333 Chefkoch333 ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    112
    Hi,
    also ich habe ein wenig weiter getestet und es scheint nicht am Stream zu liegen.
    Ich habe den Response in eine Datei gespeichert und in einer simplen Testklasse daraus den Browser bedient. Das hat ohne Probleme funktioniert.

    Ausserdem testete ich mit der relativ komplexen Seite von spiegel.de. Simple Seiten funktionieren wie ich jetzt herausgefunden habe ohne Probleme.
    Ich glaube daher das mein Problem eher am Thread Management liegt und das es zu einem Deadlock kommt. Evlt. versucht spiegel.de weitere Inhalte zu laden, was aber nicht funktioniert da mein Programm zZt. noch keine Vollduplex Kommunikation unterstützt, und neue Anfragen erst nach einer vollständigen Übermittlung der Antwort wieder entgegen nimmt.
    Das ist bisher nur eine Idee, muss da mal noch weiter testen...

    Aber wie gesagt kann ich den Socket Stream wohl erstmal als Fehler ausschließen.
     

Ähnliche Themen

  1. Http Api
    Von Gamiaris im Forum Stellenangebote (entgeltlich)
    Antworten: 0
    Letzter Beitrag: 11.08.08, 11:31
  2. http://test.de/Bla statt http://test.de/index.php?text=Bla
    Von Spranta im Forum Hosting & Webserver
    Antworten: 10
    Letzter Beitrag: 31.07.06, 21:22
  3. Http-get Http-post
    Von Movera im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.07.06, 17:56
  4. xml --> http --> xml
    Von rEAl_pSYcHoDaD im Forum XML Technologien
    Antworten: 2
    Letzter Beitrag: 17.12.04, 22:23
  5. HTTP 405 bei IIS
    Von Atom im Forum Hosting & Webserver
    Antworten: 4
    Letzter Beitrag: 18.10.04, 17:01