首页
社区
课程
招聘
[求助]网络传输用什么压缩引擎比较好?
发表于: 2008-11-27 00:28 6744

[求助]网络传输用什么压缩引擎比较好?

2008-11-27 00:28
6744
网络上数据传输,类型不限,一般用什么算法比较合理?
我测试用 Windows 自带的 RtlCompressBuffer 函数,好象压缩比和速度都不是很好啊,难道我参数设置的不合理?
该函数采用的是什么压缩算法,请高手赐教!
#define  CMP_FRM  COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD

BOOL WINAPI InitApi()
{
  HMODULE  hNtDll=GetModuleHandle("ntdll.dll");
  if(hNtDll==NULL)
    return FALSE;

  RtlGetCompressionWorkSpaceSize=(GetCompressionWorkSpaceSize)GetProcAddress(hNtDll,"RtlGetCompressionWorkSpaceSize");
  RtlCompressBuffer=(CompressBuffer)GetProcAddress(hNtDll,"RtlCompressBuffer");
  RtlDecompressBuffer=(DecompressBuffer)GetProcAddress(hNtDll,"RtlDecompressBuffer");
  return RtlGetCompressionWorkSpaceSize!=NULL && RtlCompressBuffer!=NULL && RtlDecompressBuffer!=NULL;
}

DWORD WINAPI MyCompressBuffer ( LPVOID lpDest, LPDWORD lpdwDestLen, LPCVOID lpSrc, DWORD dwSrcLen )
{
  DWORD  ret=0,dwLen1=0,dwLen2=0;
  LPVOID  lpTempMemory=NULL;

  ret=RtlGetCompressionWorkSpaceSize(CMP_FRM, &dwLen1, &dwLen2);

  lpTempMemory =LocalAlloc(LPTR,dwLen1);
  ret=RtlCompressBuffer(CMP_FRM, lpSrc, dwSrcLen, lpDest, *lpdwDestLen, dwLen2, &dwLen1, lpTempMemory);
  LocalFree(lpTempMemory);
  *lpdwDestLen=dwLen1;
  return ret;
}

DWORD WINAPI MyDecompressBuffer( LPVOID lpDest, LPDWORD lpdwDestLen, LPCVOID lpSrc, DWORD dwSrcLen )
{
  DWORD  ret=0,dwLen1=0,dwLen2=0;
  ret=RtlGetCompressionWorkSpaceSize(CMP_FRM, &dwLen1, &dwLen2);
  ret=RtlDecompressBuffer(CMP_FRM, lpDest, *lpdwDestLen, lpSrc, dwSrcLen, &dwLen2);
  *lpdwDestLen=dwLen2;
  return ret;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 184
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
ZLib
123456
2008-11-27 02:37
0
雪    币: 193
活跃值: (26)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
ZLib  Is Not Max Compress
2008-11-28 22:16
0
游客
登录 | 注册 方可回帖
返回
//