我正在编写一个xmpp库,我正在尝试编写一个流来支持zlib压缩数据。我有两个不同的版本,一个基于zlib.net,另一个使用SharpZipLib。 zlib.net版本无法识别压缩,SharpZipLib版本进入无限循环。您可以在xmpp.compression.zlib和xmpp.compression.sharpziplib中的http://github.com/coder2000/ubiety/tree/master/找到相应的代码。任何帮助解决这个问题都将不胜感激。
答案 0 :(得分:1)
这不是您问题的直接解决方案,但您是否尝试过System.IO.Compression.GZipStream或DeflateStream?
答案 1 :(得分:1)
没有。我想尽可能地跨平台。我不知道Mono是否实现了那些类,我不知道Microsoft为zlib压缩编写了类。
答案 2 :(得分:0)
我没有深入研究,但很遗憾您的SharpZipLib包装器忽略了BeginRead中的offset
和count
:
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对应物)...保存了很多实现细节......