streaming - zlib,如何解压缩压缩数据 block 流?

标签 streaming zlib

我在跨网络传输压缩数据时遇到问题。

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

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

如果 zlib 可以,请告诉我应该在 deflate/inflate 方法中使用哪种刷新模式?

谢谢!

最佳答案

不清楚为什么要将数据分成 block ,或者为什么需要进行任何特殊的刷新。如果您只是想将数据分块提供给 zlib,这就是通常使用 zlib 的方式。 zlib 不关心您如何向它提供数据——大块、小块、一次一个字节、一个大块等,不会改变压缩结果。

刷新确实会改变压缩结果,根据刷新频率和刷新方式对其进行轻微或显着降级。

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

关于streaming - zlib,如何解压缩压缩数据 block 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13357745/

相关文章:

c# - 如何逐行遍历 asp.net 中文本区域的上下文?

java - StreamCorruptedException : invalid type code: AC

c++ - 如何在 visual studio 2017 中使用 zlib 库?

c++ - C++ 中的 ZLib 解压缩

Node.js:从 s3 下载文件并将其解压缩为字符串

ruby - 使用 Thin 或根本不进行流式传输的缓慢流式传输

java - 在 Java 中 : why some Stream methods take int instead of byte or even char?

WCF-流式传输时的错误处理

php - PHP 是否默认启用 ZLIB 支持?

python - Zlib 从 websocket 解压数据