zlib,如何解压缩压缩数据块的流?

时间:2012-11-13 08:46:02

标签: streaming zlib

我遇到有关跨网络传输压缩数据的问题。

数据大小约为几百MB。我的计划是将数据划分为1MB块并使用zlib压缩每个块,然后通过网络流式传输压缩数据。在网络的另一端,数据将由zlib解压缩。

我的问题是,由于我流式传输压缩数据,因此不会有关于每个压缩块在流中开始和结束的位置的信息。我不确定zlib是否可以解压缩这样的压缩数据流。

如果zlib可以,请让我知道我应该在deflate / inflate方法中使用什么冲洗模式?

谢谢!

2 个答案:

答案 0 :(得分:1)

目前尚不清楚为什么要将数据分成块,或者为什么需要进行任何特殊的刷新。如果你只是意味着将数据以块的形式提供给zlib,那就是通常使用zlib的方式。 zlib并不关心你如何提供它 - 数据 - 大块,小块,一次一个字节,一个巨大的块等等,不会改变压缩结果。

Flushing会改变压缩结果,根据您冲洗的频率和冲洗方式稍微或显着降低压缩效果。

如果要确保在压缩数据的已知边界处完全接收数据的某些部分,或者如果您希望能够在未接收到所有数据的情况下恢复部分数据,则使用刷新。

答案 1 :(得分:1)

如果您使用的策略是必须的,您可以在主机和远程之间建立协议,例如:

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

3个数字是: 1.数据块的数量,这里是2个块 2.第一个块的字节 3.第二块的字节 分别