web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)
//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同上演示样例。
web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)的更多相关文章
- Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...
- PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)
PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更 ...
- IIS Web服务扩展中添加ASP.NET4.0
问题 服务器上安装了ASP.NET 4.0.30319组件,但是在IIS的Web服务扩展中并没有找到ASP.NET v4.0.30319这项,这导致基于.NET4.0开发的网页都无法正常浏览(404错 ...
- IIS Web服务扩展中没有Asp.net 2.0
服务器上安装了ASP.NET v2.0组件,但是在IIS的Web服务扩展中并没有找到ASP.NET v2.050727这项,这导致基于.NET2.0开发的网页都无法正常浏览. 解决方法:打开IIS,转 ...
- PHP批量替换MySql数据库中的数据内容
<?php //替换数据库内容类 class replace{ public $dbAddress; //数据库地址 public $dbUser; //数据库用户名 public $dbPwd ...
- DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)
/// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...
- 032 搭建搜索微服务01----向ElasticSearch中导入数据--通过Feign实现微服务之间的相互调用
1.创建搜索服务 创建module: Pom文件: <?xml version="1.0" encoding="UTF-8"?> <proje ...
- Android 开发之开发插件使用:Eclipse 插件 SQLiteManger eclipse中查看数据内容--翻译
最近研究了一段时间Android开发后发现,google自带的ADT工具,缺失一些开发常用的东西,希望可以构建一个类似使用JAVA EE开发体系一样开发的工具包集合,包括前台开发,调试,到后台数据库的 ...
- 【Python + Selenium断言】之如何获取定位Web页面列表中的数据
如下图所示: 当定位元素时,我想获取指定的某一列的某一行的断言,如图我只想获取jiancha1的值,有同学会说:直接定位不就好了.但是我们知道,列表的数据会时刻变动的,不能靠定死的路径,那该怎么办呢? ...
随机推荐
- Linux命令行下svn ignore忽略文件或文件夹用法
一.忽略单个目录 1.忽略文件夹 假如目录oa.youxi.com是从svn checkout出来的,在服务器本地目录添加了material,但是不希望把material加入版本控制,因此我们需要忽略 ...
- 【转】Objective-C中一种消息处理方法performSelector: withObject:
原文 : http://www.cnblogs.com/buro79xxd/archive/2012/04/10/2440074.html Objective-C中调用函数的方法是“消息传递”,这 ...
- nodejs原生模块简介
一.Express框架 前面的章节已经介绍过了,可以使用npm来安装node.js模块.具体操作请参照以前写的nodejs概论. Express是一个nodejs的web开源框架,用于快速的搭建web ...
- 解决java访问.netWebService的常见问题
到公司没多久,写了一个java调用.net写的webService结果期间用各种方法测试都没有完成,总是抛出异常,最后直接使用SOAP消息去进行调用才成功了,具体代码如下,仅供参考:import ja ...
- 巧用C#做中间语言 实现Java调用.net DLL
本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!” 环境与工具: ◆.net framework ...
- Spring4.0学习笔记(10) —— Spring AOP
个人理解: Spring AOP 与Struts 的 Interceptor 拦截器 有着一样的实现原理,即通过动态代理的方式,将目标对象与执行对象结合起来,降低代码之间的耦合度,主要运用了Proxy ...
- python中的几种遍历列表的方法比较
python的内容非常丰富,给我们带来的便利很多,很多事情的表达方法有很大的多样性,比如我经常需要遍历一个列表,取它的下标和值,这个时候就有很多方法需要取舍一下才行. for循环遍历 l = [1,2 ...
- 周赛A题
A Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Description By d ...
- 大数据学习之测试hdfs和mapreduce(二)
上篇已经搭建好环境,本篇主要测试hadoop中的hdfs和mapreduce功能. 首先填坑:启动环境时发现DataNode启动不了.查看日志 从日志中可以看出,原因是因为datanode的clust ...
- Spark Executor Driver资源调度小结【转】
一.引子 在Worker Actor中,每次LaunchExecutor会创建一个CoarseGrainedExecutorBackend进程,Executor和CoarseGrainedExecut ...