public bool FromBuffer(byte[] buffer, long offset, long size) { serializer.SetBuffer(buffer, offset, size); if (buffer[offset] != 0x38) { IsMessage = false; connectionID = serializer.ReadInt(); data = new byte[size - 4]; Buffer.BlockCopy(buffer, (int)offset + 4, data, 0, (int)size - 4); //data = serializer.ReadBytes((int)size-4); return(false); } serializer.ReadByte(); // read heard 00111000 methodType = (NATPMethod)serializer.ReadByte(); if (!Enum.IsDefined(typeof(NATPMethod), methodType)) { IsMessage = false; serializer.bytePos = (int)offset; connectionID = serializer.ReadInt(); data = new byte[size - 4]; Buffer.BlockCopy(buffer, (int)offset + 4, data, 0, (int)size - 4); //data = serializer.ReadBytes((int)size - 4); return(false); } IsMessage = true; ReadAttribute(); data = null; return(true); }
private List <byte[]> DecryptPackage(byte[] data) { serializer.SetBuffer(data, 0, data.Length); List <byte[]> packages = new List <byte[]>(); while (!serializer.IsEnd()) { int pkgLength = serializer.ReadInt(); packages.Add(serializer.ReadBytes(pkgLength)); } return(packages); }