博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)
阅读量:5068 次
发布时间:2019-06-12

本文共 1810 字,大约阅读时间需要 6 分钟。

//dll内部封装API格式

//gzipBOOL  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);//zlibBOOL 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://www.cnblogs.com/yxwkf/p/5272447.html

你可能感兴趣的文章
常用算法大全-贪婪算法
查看>>
Apache Commons CLI 开发命令行工具示例
查看>>
Laravel的生命周期
查看>>
自己编写php框架(一)
查看>>
优化MySchool数据库设计
查看>>
Flink - Checkpoint
查看>>
Apache Kafka源码分析 – Controller
查看>>
查看eclipse ADT SDK JDK版本号
查看>>
保龄球计分
查看>>
在MySql中实现MemberShip的权限管理
查看>>
vim: vs sp 调整窗口高度和宽度
查看>>
预防数据库攻击
查看>>
建立组织级过程性能基线的注意事项
查看>>
coding++:java操作 FastDFS(上传 | 下载 | 删除)
查看>>
一道算法面试题(Lowerest Common Ancestor) 的几种解法
查看>>
数组的逆序出输出、查找一个元素
查看>>
Construct Binary Tree from Preorder and Inorder Traversal -- LeetCode
查看>>
【慢慢学Android】:4.Service的开机启动
查看>>
笔记--Day2--python基础2
查看>>
Vue,品牌列表案例(仅添加)
查看>>