.Net zlib раздувают с помощью .Net 4.5
Согласно MSDN в .Net 4.5 System.IO.Compression основана на zlib.
Сейчас я пытаюсь изменить текущее чтение, основанное на взаимодействии, из дефлированного потока zlib с сервера, отличного от .NET, в реализацию на основе BCL.
Моя реализация выглядит так:
var enc = new UTF8Encoding();
var readBytes = BufferSizeRaw;
var outputBuffer = new byte[BufferSizeRaw];
var networkBuffer = _networkQueue.Take();
var ms = new MemoryStream(networkBuffer.InputBuffer, 0, networkBuffer.UsedLength);
using (Stream stream = new DeflateStream(ms, CompressionMode.Decompress))
while (readBytes==BufferSizeRaw)
{
readBytes = stream.Read(outputBuffer, 0, outputBuffer.Length);
stringBuffer+= enc.GetString(outputBuffer, 0, readBytes);
}
Я получаю следующее исключение при первом вызове распаковки / чтения в DeflateStream:
Длина блока не совпадает с его дополнением
Вызов на основе взаимодействия используетvar result=inflate(ref zStyream, ZLibFlush.NoFlush;
Кто-нибудь пробовал то же самое или видит причину ошибки в коде, или у меня неправильное понимание? Я также попробовал это с обрезанием первых двух байтов без какой-либо удачи.
Первые несколько байтов 20, 202, 177,13.