3

圧縮データをネットワーク経由で転送する際に問題があります。

データサイズは数百MB程度です。私の計画は、データを 1MB のチャンクに分割し、各チャンクを zlib で圧縮してから、圧縮されたデータをネットワーク経由でストリーミングすることです。ネットワークの反対側では、データは zlib によって解凍されます。

私の質問は、圧縮されたデータをストリーミングするため、圧縮された各チャンクがストリームのどこで開始および終了するかに関する情報がないということです。zlib がそのような圧縮されたデータ ストリームを解凍できるかどうかはわかりません。

zlib ができる場合は、deflate/inflate メソッドでどのフラッシュ モードを使用する必要があるか教えてください。

ありがとう!

4

2 に答える 2

1

データをチャンクに分割する理由、または特別なフラッシングを行う必要がある理由は明確ではありません。データをチャンクでzlibにフィードすることを意味する場合、それがzlibが通常使用される方法です。zlibは、データをどのようにフィードするかを気にしません。大きなチャンク、小さなチャンク、一度に1バイト、1つの巨大なチャンクなどは、圧縮された結果を変更しません。

フラッシュは圧縮結果を変更し、フラッシュの頻度とフラッシュの方法に応じて、わずかにまたは大幅に劣化します。

フラッシングは、データの一部が圧縮データの既知の境界で完全に受信されることを保証する場合、またはデータのすべてが受信されない場合にデータの一部を回復できるようにする場合に使用されます。

于 2012-11-13T18:24:33.263 に答える
1

使用した戦略が必須である場合は、ホストとリモートの間で次のようなプロトコルを作成できます。

02 123456 the-compressed-data 654321 the-compressed-data

3 つの数値は次のとおりです。 1. データのチャンク数、ここでは 2 つのチャンク 2. 最初のチャンクのバイト 3. それぞれ 2 番目のチャンクのバイト。

于 2014-11-14T03:30:50.423 に答える