예제 #1
0
        // From network
        public Encapsulation_Packet(byte[] Packet, ref int Offset, int Length)
        {
            ushort Cmd = BitConverter.ToUInt16(Packet, Offset);

            if (!(Enum.IsDefined(typeof(EncapsulationCommands), Cmd)))
            {
                Status = EncapsulationStatus.Unsupported_Command;
                return;
            }

            Command     = (EncapsulationCommands)Cmd;
            Offset     += 2;
            this.Length = BitConverter.ToUInt16(Packet, Offset);

            if (Length < 24 + this.Length)
            {
                Status = EncapsulationStatus.Invalid_Length;
                return;
            }

            Offset       += 2;
            Sessionhandle = BitConverter.ToUInt32(Packet, Offset);
            Offset       += 4;
            Status        = (EncapsulationStatus)BitConverter.ToUInt32(Packet, Offset);
            Offset       += 4;
            Array.Copy(Packet, Offset, SenderContext, 0, 8);
            Offset += 8;
            Options = BitConverter.ToUInt32(Packet, Offset);
            Offset += 4;  // value 24
        }
예제 #2
0
 public Encapsulation_Packet(EncapsulationCommands Command, uint Sessionhandle = 0, byte[] Encapsulateddata = null)
 {
     this.Command          = Command;
     this.Sessionhandle    = Sessionhandle;
     this.Encapsulateddata = Encapsulateddata;
     if (Encapsulateddata != null)
     {
         Length = (UInt16)Encapsulateddata.Length;
     }
     else
     {
         Length = 0;
     }
 }