我正在编写一个 xmpp 库,并且正在尝试编写一个流来支持 zlib 压缩数据。我有两个不同的版本,一个基于 zlib.net,另一个使用 SharpZipLib。zlib.net 版本无法识别压缩,SharpZipLib 版本进入无限循环。您可以在http://github.com/coder2000/ubiety/tree/master/的 xmpp.compression.zlib 和 xmpp.compression.sharpziplib 中找到相应的代码。任何解决此问题的帮助将不胜感激。
问问题
1650 次
3 回答
1
这不是您问题的直接解决方案,但您尝试过 System.IO.Compression.GZipStream 或 DeflateStream 吗?
于 2008-12-01T00:07:13.423 回答
1
不,我正在尝试尽可能跨平台。我不知道 Mono 是否实现了这些类,也不知道微软为 zlib 压缩编写了类。
于 2008-12-01T00:19:01.793 回答
0
我没有深入研究,但奇怪的是您的 SharpZipLib 包装器忽略offset
并count
在 BeginRead 中:
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
直接使用 etc (或 System.Compression 对应物)......节省了很多实现细节......
于 2008-12-01T05:18:53.763 回答