我有一个应用程序通过套接字压缩和发送数据,并且接收到的数据被写入远程机器。在恢复期间,此数据将被解压缩并检索。压缩/解压是使用“zlib”完成的。但是在解压过程中我随机遇到以下问题:
对于 .xls、.qbw 等二进制文件,zlib inflate() 失败并出现错误“Z_DATA_ERROR”。
该应用程序以块为单位压缩数据,例如“1024”字节,并从文件中读取数据并以相同的方式解压缩。从论坛帖子中,我发现 Z_DATA_ERROR 的一个原因是数据损坏。到目前为止,为了避免这个问题,我们已经引入了在发送过程中压缩的数据和接收到的数据的 CRC 校验。非常感谢任何可能发生这种情况的原因!(因为这是随机发生的,并且对于同一个文件,它在其他时间也可以工作)。是因为不正确处理 zlib inflate() 和 deflate() 吗? 注意:如果需要,将发布确切的代码片段以供进一步分析!
谢谢...乌达