public void ExtractStream() { var fileName = @"C:\Users\sal\Desktop\Hey.pdf"; var offset = 550; var compressedSize = 1132; var file = File.OpenRead(fileName); file.Seek(offset, SeekOrigin.Begin); int b; while ((b = file.ReadByte()) != 'm') { ; } while ((b = file.ReadByte()) != '\n') { ; } var streamOffset = file.Position; var compressedBytes = new byte[compressedSize]; file.Read(compressedBytes); var bytes = Zlib.Inflate(compressedBytes); var s = Encoding.ASCII.GetString(bytes); }
public override async Task <RpcMessage[]> Receive() { CheckDisposed(); var buffer = new byte[BufferSize]; while (true) { int read = await stream.ReadAsync(buffer, 0, BufferSize); if (read == 0) { return(null); } IEnumerable <byte> bytesRead = buffer.Where((b, i) => i < read); readBuffer.AddRange(bytesRead); try { byte[] inflated = Zlib.Inflate(readBuffer.ToArray()); string encoded = string.Concat(inflated.Select(Convert.ToChar)); var result = Rencode.Decode(encoded) as object[]; if (result == null) { return(null); } var messages = new List <RpcMessage>(); const int partsPerMessage = 3; for (int skip = 0; skip < result.Length; skip += partsPerMessage) { object[] messageParts = result.Skip(skip).Take(partsPerMessage).ToArray(); RpcMessage message = RpcMessage.Create(messageParts); messages.Add(message); } readBuffer.Clear(); return(messages.ToArray()); } catch { // Message is incomplete } } }