我正在做一个项目,如果我的磁盘出现问题,我会在使用 ZLIB 压缩后将大块内存发送到另一个磁盘。这个转储然后我打算下载并用于进一步调试。这种压缩和上传将一次完成一个块 - 比如说 1024 K。
问题是在我将它上传到另一个磁盘之前,我需要有正好 1024K 的输出块(除此之外还有标题和拖尾,所以这个块大小是压缩数据的大小),然后我可以轻松解压缩它们并使用它。我尝试更改 put_byte 函数,以便一旦输出缓冲区为 1024K,我可以将其发送到另一个磁盘,但这似乎不起作用。
我曾想过检查 Z_BUF_ERROR,然后将其发送过来并重新启动整个压缩过程,但是我不确定是否所有待处理的输入/输出都已刷新。
有没有其他方法可以做到这一点 - 即确保在输出缓冲区(压缩数据大小)正好有 1024K 字节时发送数据包。