【问题标题】:Stream compression for network traffic网络流量的流压缩
【发布时间】:2008-11-30 23:38:57
【问题描述】:

我正在编写一个 xmpp 库,并且我正在尝试编写一个流来支持 zlib 压缩数据。我有两个不同的版本,一个基于 zlib.net,另一个使用 SharpZipLib。 zlib.net 版本无法识别压缩,SharpZipLib 版本进入无限循环。您可以在 xmpp.compression.zlib 和 xmpp.compression.sharpziplib 中的 http://github.com/coder2000/ubiety/tree/master/ 找到相应的代码。任何解决此问题的帮助将不胜感激。

【问题讨论】:

    标签: c# compression zlib sharpziplib


    【解决方案1】:

    这不是您问题的直接解决方案,但您尝试过 System.IO.Compression.GZipStream 或 DeflateStream 吗?

    【讨论】:

      【解决方案2】:

      没有。我正在尝试尽可能跨平台。我不知道 Mono 是否实现了这些类,也不知道微软为 zlib 压缩编写了类。

      【讨论】:

      • 它们都基于行业标准,应该适合您。
      • @Coder2000 - 你只是发布了一个答案,而不是一个问题。将这些 cmets 添加到您的原始问题中。
      【解决方案3】:

      我没有深入研究,但奇怪的是您的 SharpZipLib 包装器忽略了 BeginRead 中的 offsetcount

      public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback cback, object state)
      {
        _outBuff = buffer;
        if ( _in.IsNeedingInput )
          return _innerStream.BeginRead(_inBuff, 0, _inBuff.Length, cback, state);
      
        ZlibStreamAsyncResult ar = new ZlibStreamAsyncResult(state);
        cback(ar);
        return ar;
      }
      

      说我疯了,但可能直接使用GZipOutputStream 等(或 System.Compression 对应物)...节省了很多实现细节...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        • 1970-01-01
        • 2014-03-31
        • 2012-03-28
        • 1970-01-01
        相关资源
        最近更新 更多