有没有人知道一个性能良好、支持C/C++的自由(非GPL)压缩库,并支持基于数据报的压缩?
所谓基于数据报,指的是像QuickLZ(GPL)一样的功能,可以压缩和解压缩流的多个数据报,同时在数据报之间维护历史记录以实现合理的压缩。
我更看重压缩比而不是CPU使用率,只要CPU使用率不过分。但我很难找到这个功能,所以任何东西都值得关注。
有没有人知道一个性能良好、支持C/C++的自由(非GPL)压缩库,并支持基于数据报的压缩?
所谓基于数据报,指的是像QuickLZ(GPL)一样的功能,可以压缩和解压缩流的多个数据报,同时在数据报之间维护历史记录以实现合理的压缩。
我更看重压缩比而不是CPU使用率,只要CPU使用率不过分。但我很难找到这个功能,所以任何东西都值得关注。
zlib的主要deflate()
函数带有一个flush
参数,它允许各种不同的刷新模式。如果你在每个数据包的末尾传递Z_SYNC_FLUSH,那么应该会产生所需的效果。
详细信息请参见zLib手册。
bzip2也具有刷新功能,这可能会让您执行此类操作。请参见http://www.bzip.org/1.0.5/bzip2-manual-1.0.5.html#bzCompress
Z_SYNC_FLUSH
保留了压缩状态,只需写入足够的数据,以便接收端可以读取到目前为止已经写入的内容。我想,虽然一年半后才接受仍然比永远不接受要好 :) - porgarmingduod也许你可以使用lzma压缩SDK,它是由Igor Pavlov编写并放置在公共领域。
而且,由于它可以压缩流文件,并具有内存到内存的压缩功能,我认为可能可以压缩数据包流(也许需要进行一些更改),但不确定。