流网络流量压缩

时间:2008-11-30 23:38:58

标签: c# compression zlib sharpziplib

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

没有。我想尽可能地跨平台。我不知道Mono是否实现了那些类,我不知道Microsoft为zlib压缩编写了类。

答案 2 :(得分:0)

我没有深入研究,但很遗憾您的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对应物)...保存了很多实现细节......