2008-11-30 4 views
0

Я пишу библиотеку xmpp, и я пытаюсь написать поток для поддержки сжатых данных zlib. У меня две разные версии, основанные на zlib.net, а другая - на SharpZipLib. Версия zlib.net не распознает сжатие, а версия SharpZipLib входит в бесконечный цикл. Вы можете найти соответствующий код в http://github.com/coder2000/ubiety/tree/master/ в xmpp.compression.zlib и xmpp.compression.sharpziplib. Любая помощь для решения этой проблемы будет оценена по достоинству.Сжатие потока для сетевого трафика

ответ

1

Это некое решение вашей проблемы, но вы пробовали System.IO.Compression.GZipStream или DeflateStream?

1

Нет. Я стараюсь быть как можно более крестообразной. Я не знаю, реализует ли Mono эти классы, и я не знал, что Microsoft написал классы для сжатия zlib.

+0

Они оба основаны на отраслевых стандартах и ​​должны работать на вас. – StingyJack 2008-12-01 01:48:59

0

Я не смотрел в глубину, но любопытно, что ваш SharpZipLib обертка игнорирует offsetcount и в 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 и т.д. непосредственно (или System.Compression коллеги) ... экономит много деталей реализации ...

Смежные вопросы