zoukankan      html  css  js  c++  java
  • gzip优化网络传输量提高传输效率[转]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.IO.Compression;
    using System.Data;

    namespace Lis2013HISWSTest
    {
    public class ZipHelper
    {
    /// <summary>
    /// 解压
    /// </summary>
    /// <param name="Value"></param>
    /// <returns></returns>
    public static DataSet GetDatasetByString(string Value)
    {
    DataSet ds = new DataSet();
    string CC = GZipDecompressString(Value);
    System.IO.StringReader Sr = new StringReader(CC);
    ds.ReadXml(Sr);
    return ds;
    }
    /// <summary>
    /// 根据DATASET压缩字符串
    /// </summary>
    /// <param name="ds"></param>
    /// <returns></returns>
    public static string GetStringByDataset(string ds)
    {
    return GZipCompressString(ds);
    }
    /// <summary>
    /// 将传入字符串以GZip算法压缩后,返回Base64编码字符
    /// </summary>
    /// <param name="rawString">需要压缩的字符串</param>
    /// <returns>压缩后的Base64编码的字符串</returns>
    public static string GZipCompressString(string rawString)
    {
    if (string.IsNullOrEmpty(rawString) || rawString.Length == 0)
    {
    return "";
    }
    else
    {
    byte[] rawData = System.Text.Encoding.UTF8.GetBytes(rawString.ToString());
    byte[] zippedData = Compress(rawData);
    return (string)(Convert.ToBase64String(zippedData));
    }

    }
    /// <summary>
    /// GZip压缩
    /// </summary>
    /// <param name="rawData"></param>
    /// <returns></returns>
    public static byte[] Compress(byte[] rawData)
    {
    MemoryStream ms = new MemoryStream();
    GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
    compressedzipStream.Write(rawData, 0, rawData.Length);
    compressedzipStream.Close();
    return ms.ToArray();
    }
    /// <summary>
    /// 将传入的二进制字符串资料以GZip算法解压缩
    /// </summary>
    /// <param name="zippedString">经GZip压缩后的二进制字符串</param>
    /// <returns>原始未压缩字符串</returns>
    public static string GZipDecompressString(string zippedString)
    {
    if (string.IsNullOrEmpty(zippedString) || zippedString.Length == 0)
    {
    return "";
    }
    else
    {
    byte[] zippedData = Convert.FromBase64String(zippedString.ToString());
    return (string)(System.Text.Encoding.UTF8.GetString(Decompress(zippedData)));
    }
    }
    /// <summary>
    /// ZIP解压
    /// </summary>
    /// <param name="zippedData"></param>
    /// <returns></returns>
    public static byte[] Decompress(byte[] zippedData)
    {
    MemoryStream ms = new MemoryStream(zippedData);
    GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Decompress);
    MemoryStream outBuffer = new MemoryStream();
    byte[] block = new byte[1024];
    while (true)
    {
    int bytesRead = compressedzipStream.Read(block, 0, block.Length);
    if (bytesRead <= 0)
    break;
    else
    outBuffer.Write(block, 0, bytesRead);
    }
    compressedzipStream.Close();
    return outBuffer.ToArray();
    }
    }
    }

  • 相关阅读:
    从编程到入侵
    编程实现盗2005 Beta2版QQ
    Justin Frankel:Winamp的反斗奇星
    用安静的热情征服联合国
    我和试用期员工之间的故事
    Sogou输入法之父给我们的启示
    《ATL开发指南》的一个值得商榷的地方
    厦门PX项目迁址:意义有限的进步
    探析项目主导型的IT业的人员需求变化及其应对办法
    今天,影响了一位试用期员工的去留
  • 原文地址:https://www.cnblogs.com/fx2008/p/3779276.html
Copyright © 2011-2022 走看看