4

zlib deflate 圧縮ストリームが必要です。私の実装では、セッション全体で単一のストリームを使用する必要があります。このセッション中に、データの小さなチャンクが圧縮ストリームを介して渡されます。チャンクが渡されるたびに、すぐに圧縮形式で送信する必要があります。

私の最初の試みは DeflateStream を使用していましたが、最初のチャンクを送信すると、ストリームを閉じるまで圧縮データが表示されません。

zlib フラッシュ モードについて読むと、必要なものに対して特定のモードが 1 つあるように見えます。

  1. zlib deflate 圧縮に正しいクラス (DeflateStream) を使用していますか?
  2. 「同期フラッシュ」動作を有効にするにはどうすればよいですか?
4

3 に答える 3

2

DotNetZipプロジェクトには、独自の DeflateStream の実装を含むサブモジュール Zlib があります。

この実装には、FlushMode という名前の別のプロパティがあります。

DeflateStream deflate = new DeflateStream(stream, CompressionMode.Compress);
deflate.FlushMode = FlushType.Sync;
deflate.Write (data, 0, data.Length);
//No call to deflate.Flush() needed, automatically flushed on every write.
于 2010-11-28T19:41:05.837 に答える
0

実際、閉じるときにのみフラッシュします。DeflateStream を閉じるときに基になるストリームを閉じないように、オーバーロードされたコンストラクターtrueを渡して、毎回異なる DeflateStream インスタンスを使用する必要があります。

于 2010-11-28T16:07:21.250 に答える