public void AAAAA() { var bytes = "005702ffffffffffff0010116bff0100766963746f722e646576656c6f706d656e744079616e6465782e72753acef23a766963746f722e646576656c6f706d656e744079616e6465782e72757cd2e5ece03a7c7465737443820000000000000000000000".ToByteArray(); var b = new IncomingBuffer(); b.add(bytes); var bb = b.TryGet(); var a = DeserializedCommand.Parse(bb); var p = a.Payload.ToHexString(); }
public override void AppendData(byte[] buffer, int offset, int count) { //TODO body directly forward IncomingBuffer.Write(buffer, offset, count); int len = (int)IncomingBuffer.Length - incomingOffset; //bytes written into the incomingBuffer but not be read byte[] incomingBytes = new byte[len]; IncomingBuffer.Seek(incomingOffset, SeekOrigin.Begin); IncomingBuffer.Read(incomingBytes, 0, len); string s = Encoding.ASCII.GetString(incomingBytes); int i = 0; int sOffset = 0; while (!HeaderReceived && (i = s.IndexOf("\r\n", sOffset, StringComparison.Ordinal)) >= 0) { if (i - sOffset == 0 && incomingOffset > 0) { //head over i += 2; incomingOffset += 2; HeaderReceived = true; } else { string header = s.Substring(sOffset, i - sOffset); Headers.Add(header); HandleHeader(header); incomingOffset += i - sOffset + 2; sOffset = i + 2; } } if (HeaderReceived && !ContentReceived) { if (contentBeginOffset == 0) { contentBeginOffset = incomingOffset; } incomingOffset += len - i; HandleBody(incomingBytes, i, len - i); } }