2008-11-30 129 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同行)...節省了大量的實施細節...