Сжатие потока для сетевого трафика - PullRequest
0 голосов
/ 01 декабря 2008

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

Ответы [ 3 ]

1 голос
/ 01 декабря 2008

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

1 голос
/ 01 декабря 2008

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

0 голосов
/ 01 декабря 2008

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

...