web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)

web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)

大家好,又见面了,我是全栈君。

点击下载独立的dll

//dll内部封装API格式

//gzip
BOOL  fnZlibDecompressPacket
(__IN_PARAM unsigned char* gZlibDataBuffer,
 __IN_PARAM size_t gZLibDataLength,
__OUT_PARAM char* pChDataBuffer,
__OUT_PARAM DWORD *pdwLength);

BOOL  fnZlibCompressPacket
(__IN_PARAM unsigned char* gZlibDataBuffer, 
__IN_PARAM size_t gZLibDataLength,
__OUT_PARAM char * pchGzipOutData,
__OUT_PARAM DWORD *pdwLength);

//zlib

BOOL fnGzipDecompressPacket
(__IN_PARAM unsigned char* gzipDataBuffer,
__IN_PARAM size_t gzipDataBuffer_Length,
 __OUT_PARAM char* pChDataBuffer,
__OUT_PARAM DWORD *pdwLength);

BOOL fnGzipCompressPacket
(__IN_PARAM const char * gzipDataBuffer,
__IN_PARAM int gzipDataBuffer_Length,
__OUT_PARAM char * dstDataBuffer, 
__OUT_PARAM int *pdwLength);

//GZIP调用核心代码演示

typedef  BOOL   (*UncompressionGzipPacketToBuffer)
(unsigned char* gZipDataBuffer,  size_t gZipDataLength, char * pDataBuffer,DWORD *dwLength);

typedef  BOOL   (*CompressionBufferPacketToGzip)
( unsigned char* chDataBuffer,  size_t chDataLength, char* pGzipBuffer,DWORD *dwLength);


HINSTANCE hInst=NULL;
    
UncompressionGzipPacketToBuffer UngzipPacket;
    
CompressionBufferPacketToGzip   ComGzipBuffer;
    
hInst=LoadLibrary(_T("GzipZlibdll.dll"));
    
if (hInst==NULL)
{
    return -1;
} 
UngzipPacket=(UncompressionGzipPacketToBuffer)GetProcAddress(hInst,"fnGzipDecompressPacket");

ComGzipBuffer=(CompressionBufferPacketToGzip)GetProcAddress(hInst,"fnGzipCompressPacket");   

if (UngzipPacket==NULL)    
{
        return -1; 
} 
if (ComGzipBuffer==NULL)
{
        return -1;
    
}
  
BOOL bRet=UngzipPacket((unsigned char*)pChGzipBuff,dwReaded,pChDataBuff,&dwTransferSize);

//注意此处dwGzipSize的必须有值,不能传递0考虑到压缩之后一定比原来数据小。传递dwTransferSize大小就可以

BOOL bReturn=ComGzipBuffer((unsigned char*)pChDataBuff,dwTransferSize,pChGzipBuff,&dwGzipSize);

FreeLibrary(hInst);


//zlib同上演示样例。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115681.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [渝粤教育] 西安工业大学 汉语文字学 参考 资料[通俗易懂]

    教育-汉语文字学-章节资料考试资料-西安工业大学【】请简要说明黄帝时期与半坡遗址之间的关系。第一章汉字的起源章测试题1、【多选题】请选从下列选项中找出“八卦”的用途()A、卜筮B、族徽C、计数D、装饰参考资料【】2、【多选题】请找出《周礼》中有关史官系统的名称()A、大史B、小史C、内史D、外史参考资料【】3、【多选题】请从下面选项中选出黄帝时期的特点。()A、战争B、纺织C、宫室D、穴居参考资料【】4、【判断题】文

    2022年4月7日
    115
  • gateway网关的作用_gateway网关限流

    gateway网关的作用_gateway网关限流Gateway服务网关SpringCloudGateway是SpringCloud的一个全新项目,该项目是基于Spring5.0,SpringBoot2.0和ProjectReactor等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。为什么需要网关Gateway网关是我们服务的守门神,所有微服务的统一入口。网关的核心功能特性: 请求路由 权限控制 限流 架构图:权限控制

    2022年10月11日
    2
  • 缺陷和缺陷报告_质量缺陷报告

    缺陷和缺陷报告_质量缺陷报告一、缺陷的基本概述1、缺陷的定义(重要):①软件未实现产品说明书要求的功能②软件出现了产品说明书指明不该出现的功能③软件实现了产品说明书未提到的功能④软件未实现产品说明书虽未明确提及但应该实现的目标⑤软件难以理解、不易使用、运行缓慢或者(从测试角度看)最终用户会认为不好2、缺陷属性1、缺陷的类型:功能、用户界面、文档、软件包、性能、系统/模块接口注意:需求分析、设计阶段,文档类型缺陷多;集成测试阶段,一般接口类型的缺陷多一…

    2022年9月18日
    3
  • btav狼php,www.xiaav.cc

    btav狼php,www.xiaav.ccDomainName:XIAAV.CCDomainID:105952573WHOISServer:whois.enom.comReferralURL:http://www.enom.comUpdatedDate:2016-12-21T07:11:52ZCreationDate:2013-05-27T13:45:23ZRegistryExpiryDate:2017-05…

    2022年6月9日
    31
  • RabbitMQ Network Partitions

    RabbitMQ Network PartitionsClusteringandNetworkPartitionsRabbitMQclustersdonottoleratenetworkpartitionswell.IfyouarethinkingofclusteringacrossaWAN,don’t.Youshouldusefederationortheshovelinstead.H

    2022年6月26日
    28
  • 使用深度图重建世界坐标

    使用深度图重建世界坐标参考网址:https://blog.csdn.net/puppet_master/article/details/77489948首先建立一个绘制世界坐标的项目。保证物体的顶点在0到1范围之内,这样颜色能够有意义的表示物体的世界坐标位置。然后编写一个shader,用于绘制世界坐标位置:Shader"Unlit/DrawWorldPoint&quo

    2022年5月8日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号