2008-11-30 100 views
0

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

回答

1

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

1

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

+0

他们都是基于行业标准,并应为你工作。 – StingyJack 2008-12-01 01:48:59

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同行)...节省了大量的实施细节...