Komprimieren und Dekomprimieren von Streams

8

Ich habe diesen Artikel über den in JAVA implementierten einfachen Proxy-Server gefunden:

Ссылка

Der Code erhält einfach einen Stream vom Client, nachdem er ihn an den Server gesendet hat und nachdem er vom Server einen Stream empfangen hat und die Antwort an den Client sendet. Was ich tun möchte, ist, diese Ströme zu komprimieren, bevor sie gesendet und dekomprimiert werden, nachdem sie empfangen wurden.

Ich habe die Klasse GZIPInputStream gefunden, aber ich weiß nicht, wie ich sie benutzen soll und was ich im Internet gefunden habe, hat mir nicht geholfen. Ich habe das entweder nicht verstanden oder es war keine gute Lösung für mich.

Meine Idee ist auch, aber ich bin mir nicht sicher, ob es in Ordnung ist:

%Vor%

Nun sollten die an den Server gesendeten Daten vor dem Senden komprimiert werden (aber ich bin mir nicht sicher, ob es eine korrekte Lösung ist). IST ES?

Stellen Sie sich vor, der Server sendet mir die komprimierten Daten. Also dieser Stream:

%Vor%

ist komprimiert.

Wie kann ich es dekomprimieren und in das

schreiben %Vor%

Danke für die Hilfe, Jungs!

    
Milan Novotný 18.11.2011, 21:59
quelle

1 Antwort

9

Lesen Sie die javadoc dieser Ströme: Ссылка und Ссылка .

GZIPOutputStream komprimiert das Bytes, die Sie in sie schreiben, bevor sie zu dem umhüllten Ausgangsstrom zu senden. GZIPInputStream liest komprimierte Bytes aus dem umschlossenen Stream und gibt unkomprimierte Bytes zurück.

Wenn Sie also komprimierte Bytes an beliebige Personen senden möchten, müssen Sie in einen GZIPOutputStream schreiben. Aber das funktioniert natürlich nur, wenn das empfangende Ende es kennt und die empfangenen Bytes dekomprimiert.

Und falls Sie komprimierte Bytes lesen möchten, müssen Sie sie von einem GZIPInputSTream lesen. Aber natürlich funktioniert es nur, wenn die Bytes tatsächlich mit dem gleichen Algorithmus vom sendenden Ende komprimiert werden.

    
JB Nizet 18.11.2011, 22:11
quelle