C++-如何用zlib压缩内存数据?

发布于 2017-01-01 04:35:23 字数 194 浏览 1533 评论 2

前几天在做一个web服务器和客户端文件上传的功能时,需要实现客户端能用gz压缩上传的文件,对web服务器gz压缩后的内容,客户端也需要解压缩。在开发的时候使用了zlib,但是压缩和解压缩使用的zlib的接口是操作文件的。测试时发现文件操作导致客户端速度很慢,因此需要在内存中进行压缩和解压缩。需要满足的条件是能够让web服务器(我们现在用的是ngix)识别出来进行解压缩处理

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泛泛之交 2017-08-13 09:57:48

建议看看zlib的说明文档,看看例子就明白了,我也有大量用到,zlib比较好,不过并不是最快的,lzo速度比较快,也可以参考,不过做网站应用的话zlib锁压缩出来的gz格式比较好。

泛泛之交 2017-07-18 04:43:42

#include <stdio.h>
#include "zlib.h"

int main()
{
//原始数据
const unsigned char strSrc[]="hello world!n
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试";

unsigned char buf[1024]={0},strDst[1024]={0};
unsigned long srcLen=sizeof(strSrc),bufLen=sizeof(buf),dstLen=sizeof(strDst);

printf("Src string:%snLength:%dn",strSrc,srcLen);
//压缩
compress(buf,&bufLen,strSrc,srcLen);
printf("nAfter Compressed Length:%dn",bufLen);
printf("Compressed String:%sn",buf);
//解压缩
uncompress(strDst,&dstLen,buf,bufLen);
printf("nAfter UnCompressed Length:%dn",dstLen);
printf("UnCompressed String:%sn",strDst);
return 0;
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文