数据内容编码: gzip传输-编码: chunked
您可以将包的内容已经保存到. zip文件中,然后手动解压缩数据以证明数据是完整的。
我的数据是1f8b 08000000000040004 C1 b 10 d 00200804
c 055 CCD 716103110 b 6b 16001 C1 cab8bb 7717
59ab 022 e 44 bde 1646 c 38d 88 c98 c 75451 bc3 f
00 2D E7 34 0B 23 00 00 00,
但是,我在使用zlib库。 内存解压缩方法为以下代码(在线复制滴)。
intinflate_read(char*source,int len,char **dest,int gzip ) ) ) ) ) )。
{
int ret;
无符号硬盘;
z_stream strm;
无符号char out [ chunk ];
int总大小=0;
/* allocate基础设施状态* /
strm.zalloc=Z_NULL;
strm.zfree=Z_NULL;
strm.opaque=Z_NULL;
strm.avail_in=0;
strm.next_in=Z_NULL;
是if(gzip )
ret=inflateinit2(strm,47 );
else
ret=inflateinit(strm;
if(ret!=Z_OK )
返回ret;
strm.avail_in=len;
strm.next_in=source;
/*运行基础设施(oninputuntiloutputbuffernotfull ) /
do {
strm.avail_out=CHUNK;
strm.next_out=out;
ret=inflate(strm,Z_NO_FLUSH );
资产(ret!=Z_STREAM_ERROR;/*状态不关闭* /
交换机(ret ) {
case Z_NEED_DICT:
ret=Z_DATA_ERROR; /* and fall through */
case Z_DATA_ERROR:
case Z_MEM_ERROR:
基础设施结束(strm;
返回ret;
}
have=CHUNK - strm.avail_out;
总大小=have;
*dest=realloc(dest,totalsize );
memcpy(*desttotalsize-have,out,have );
}while(strm.avail_out==0);
/* clean up和return * /
(语音)基础设施结束) strm;
return ret==Z_STREAM_END? Z_OK : Z_DATA_ERROR;
}
总是ret=inflateinit2(strm,47 ); 返回Z_STREAM_ERROR并将47更改为15后,此步骤没有错,但ret=inflate(strm,Z_NO_FLUSH ); 出现Z_DATA_ERROR。 请告诉我什么理由。 谢谢虾们
阅读(5382 ) |评论(1) |转发)0|