gzip and deflate
来源:互联网 发布:淘宝折扣网 编辑:程序博客网 时间:2024/04/25 10:14
Gzip/deflate 解码
一般的http网页在传输时为了减少流量加快传输速度,都会对数据进行压缩,压缩方式一般有gzip和deflate两种方式。
gzip的解压方式如下:
int httpgzdecompress(Byte *zdata, uLong nzdata, Byte*data, uLong *ndata)
{
int err = 0;
z_streamd_stream = {0}; /* decompression stream */
static chardummy_head[2] =
{
0x8 +0x7 * 0x10,
(((0x8 +0x7 * 0x10) * 0x100 + 30) / 31 * 31) & 0xFF,
};
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = zdata;
d_stream.avail_in = 0;
d_stream.next_out = data;
if(inflateInit2(&d_stream, 47) !=Z_OK) return -1;
while(d_stream.total_out < *ndata && d_stream.total_in < nzdata) {
d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */
if((err= inflate(&d_stream, Z_NO_FLUSH)) == Z_STREAM_END) break;
if(err!= Z_OK )
{
if(err == Z_DATA_ERROR)
{
d_stream.next_in = (Bytef*) dummy_head;
d_stream.avail_in = sizeof(dummy_head);
if((err = inflate(&d_stream, Z_NO_FLUSH)) != Z_OK)
{
return -1;
}
}
elsereturn -1;
}
}
if(inflateEnd(&d_stream) != Z_OK) return -1;
*ndata =d_stream.total_out;
return 0;
}
Deflate与gzip解压函数的差别只在于
if(inflateInit2(&d_stream, -15) !=Z_OK) return -1;
- gzip and deflate
- Accept-Encoding: gzip,deflate
- deflate与gzip
- Accept-Encoding: gzip,deflate
- gzip,deflate,zlib辨析
- GZIP, ZLIB, DEFLATE, 文件格式
- Accept-Encoding: gzip,deflate
- gzip,deflate,zlib辨析
- GZip 和 deflate压缩
- deflate与gzip
- apache开启gzip deflate
- gzip,deflate,zlib辨析
- GZIP, ZLIB, DEFLATE, 文件格式 --zz
- .NET GZIP,deflate压缩(转)
- 抓取网页的gzip/deflate
- “Accept-Encoding: gzip, deflate”问题
- ASP.NET頁面壓縮 Compression Gzip Deflate
- ActionFilterAttribute之CompressFilter,GZIP,DEFLATE压缩
- 只需一行代码就能让IE 6崩溃
- 从青葱(春) 到盛夏,间隔十年旅程!
- 高薪诚聘项目经理
- 进来
- 【转载】findbugs的使用方法
- gzip and deflate
- C语言笔记
- Java语言语法-控制结构
- 写位图到文件
- 快速增加积分
- TA-Mapper v1.1: Application Pen-Testing Effort Estimator
- 在linux下,利用gSoap开发Web Service C/C++客户端
- Eclipse技巧
- 如何设置能WORD文档只能看不能修改,不能复制粘贴不能另存?