.Net zlib jest nadmuchiwany za pomocą .Net 4.5
Według MSDN w .Net 4.5 System.IO.Compression jest oparty na zlib.
Próbuję teraz zmienić mój bieżący odczyt oparty na interopie z strumienia zlib deflated z serwera innego niż .NET na implementację opartą na BCL.
Moja implementacja wygląda tak:
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);
}
Otrzymuję następujący wyjątek podczas pierwszego wywołania dekompresji / odczytu na DeflateStream:
Długość bloku nie pasuje do jego uzupełnienia
Wywołanie oparte na interopie wykorzystujevar result=inflate(ref zStyream, ZLibFlush.NoFlush;
Czy ktoś próbował tego samego lub widzi przyczynę błędu w kodzie, czy też jest po mojej stronie błędne zrozumienie? Wypróbowałem to także z obcięciem pierwszych dwóch bajtów bez szczęścia.
Pierwsze kilka bajtów to 20, 202, 177,13.