我想使用 gzip 压缩内存缓冲区并将压缩的字节放入另一个内存缓冲区 . 我想使用 Content-Encoding: gzip 在HTTP数据包的有效负载中发送压缩缓冲区 . 我可以使用 zlib 轻松地进行deflate压缩( compress() 函数) . 但是,我没有看到我需要的API( gzip ) . zlib API用于压缩和写入文件( gzwrite() ) . 但是,我想压缩并写入缓冲区 .
Content-Encoding: gzip
compress()
gzwrite()
有任何想法吗?
我在Linux上使用C语言 .
不,zlib API确实在内存中使用 deflate 函数提供gzip压缩 . 您需要实际阅读zlib.h中的文档 .
deflate
Gzip是一种文件格式,这就是为什么看起来提供的实用程序函数在fd上运行,使用 shm_open() 来创建具有足够内存的fd mmap() . 重要的是,正在写入的数据不具有mmapped区域的限制 .
shm_open()
mmap()
将fd传递给 gzdopen() .
gzdopen()
但正如马克在他的回答中建议使用Basic API界面是一种更好的方法 .
2 回答
不,zlib API确实在内存中使用
deflate
函数提供gzip压缩 . 您需要实际阅读zlib.h中的文档 .Gzip是一种文件格式,这就是为什么看起来提供的实用程序函数在fd上运行,使用
shm_open()
来创建具有足够内存的fdmmap()
. 重要的是,正在写入的数据不具有mmapped区域的限制 .将fd传递给
gzdopen()
.但正如马克在他的回答中建议使用Basic API界面是一种更好的方法 .