2012-11-13 138 views
2

我在跨網絡傳輸壓縮數據時遇到了問題。zlib,如何解壓縮壓縮數據塊的流?

數據大小約爲幾百MB。我的計劃是將數據分成1MB塊並用zlib壓縮每個塊,然後通過網絡傳輸壓縮的數據。在網絡的另一端,數據將由zlib解壓縮。

我的問題是,因爲我流的壓縮數據,將不會有關於每個壓縮塊開始和結束在流中的位置的信息。我不確定zlib是否可以解壓縮這樣的壓縮數據流。

如果zlib可以,請讓我知道我應該在放氣/充氣方法中使用什麼沖水模式?

謝謝!

回答

1

目前尚不清楚爲什麼要將數據分成塊,或者爲什麼需要做特殊的沖洗。如果您只是將數據以塊的形式提供給zlib,那麼zl​​ib通常是如何使用的。 zlib並不關心你如何爲它提供數據 - 大塊,小塊,一次一個字節,一個巨塊等不會改變壓縮結果。

Flushing的確會改變壓縮的結果,根據你刷新的頻率和刷新的頻率,它會稍微或顯着地降低壓縮的結果。

如果要確保某些部分數據在壓縮數據的已知邊界處完全接收,或者希望能夠恢復部分數據(如果未收到全部數據) 。

0

如果您所使用的策略是必須的,你可以讓你的主機和遙控器,如之間的協議:

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

的3個數字有: 1.數據塊的數量,在這裏是2塊 2.第一塊的字節 3.第二塊的字節 分別。