コード例 #1
0
        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();
        }
コード例 #2
0
        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);
            }
        }