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();
    }
    }
    }

  • 相关阅读:
    “浪潮杯”第九届山东省ACM大学生程序设计竞赛 F: Four-tuples容斥定理
    B
    C. Tourist Problem 2021.3.29 晚vj拉题 cf 1600 纯数学题
    C. Sum of Cubes
    Day29、Python中的异常处理及元类
    isinstance,issubclass,反射,内置方法(__str__,__del__,__call__)
    绑定方法与非绑定方法;classmethod及staticmethod装饰器
    组合,多态,封装
    类的继承
    面向对象编程思想基本介绍,类与对象的基本使用,属性查找,绑定方法
  • 原文地址:https://www.cnblogs.com/fx2008/p/3779276.html
Copyright © 2011-2022 走看看