免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 网站相关 > 网站编程 > 使用gzip编码方式提升网页下载速度(2)

使用gzip编码方式提升网页下载速度(2)

时间:2011-10-28 22:18来源:未知 整理:寂涯网络 点击:


   strLine += 4;
  }else{
    if (bIsChunked)
   {
    strLine = strstr(buffer, "\r\n");
     if (!strLine) break;
    strLine += 2;
   }else{
    strLine = buffer;
   }
  }
   if (bIsChunked)
  {
   nChunkSize = strtoul(strLine, NULL, 16);
    if (nChunkSize == 0) break;
   nChunkData = strstr(strLine, "\r\n");
    if (!nChunkData) break;
   nChunkData += 2;//'\r\n'
    int nLen = nResult - (nChunkData - buffer);
  try_l:
    if (nChunkSize >= nLen)
   {
    nChunkNow = nChunkSize - nLen;
    cBuf.Write((PBYTE)nChunkData, nLen);
     //循环将当前分块数据全部得到
     while (nChunkNow)
    {
     BYTE *data = new BYTE[nChunkNow];
     nResult = recv(sock, (char *)data, nChunkNow, 0);
//没进行错误处理
     cBuf.Write(data, nResult);
     nChunkNow = nChunkNow - nResult;
      delete[] data;
    }
  }else{
//判断是否为gzip的
   tstr = strstr(buffer, "Content-Encoding:");
    if (tstr)
   {
    tstr = strstr(tstr, "gzip");
     if (tstr) bIsGzip = true

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 }
  if (cBuf.GetBufferLen() <= 0) return false;
  char *szRetScr;
  if (bIsGzip)
 {
//小于1024-nLen
    cBuf.Write((PBYTE)nChunkData, nChunkSize);
    strLine = nChunkData + nChunkSize + 2;  //+回车(2)
    nChunkSize = strtoul(strLine, NULL, 16);
     if (nChunkSize == 0) break;
    nChunkData = strstr(strLine, "\r\n");
     if (!nChunkData) break;
    nChunkData += 2;// '\r\n'
int nLen = nResult - (nChunkData - buffer);
     goto try_l;
   }
  }else{
   cBuf.Write((PBYTE)strLine, nResult);
  }

 
   //调用Gzip类解压数据
  CGZIP2A cGzip(cBuf.GetBuffer(),cBuf.GetBufferLen());
  size_t count = strlen(cGzip.psz);
  szRetScr = (char *)malloc(cGzip.Length + 1);
  memcpy(szRetScr, cGzip.psz, cGzip.Length);
  szRetScr[cGzip.Length] = 0;
 }else{
  szRetScr = (char *)malloc(cBuf.GetBufferLen() + 1);
  memcpy(szRetScr, cBuf.GetBuffer(), cBuf.GetBufferLen());
  szRetScr[cBuf.GetBufferLen()] = 0;
 }
 *szScr = szRetScr;
  return true;
}

其中 gzip数据也可以使用zlib库(gzFile)进行解压缩。
 这样处理下来我们就可以对压缩数据进行处理了。
 
应用
 
 我们采用压缩算法,可以有效的减少网络传输量,从而优化客户端,减轻服务端负载,
大大优化了数据传输的速度。我们以
后为网站写客户端都可以很方便的使用这种方式,不必再为数据传输的慢而烦恼了!
 

本页地址 http://www.jybase.net/wangzhanbiancheng/20111028488.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com