Ejemplo n.º 1
0
        public static EndPointMessage Read(byte[] data)
        {
            var message = new EndPointMessage {
                Lenght = (uint)data.Length
            };

            if (Helper.IsGZip(data))
            {
                data = Helper.ReadGZip(data);
            }
            try
            {
                var stream = new MemoryStream(data);
                using (var reader = new BinaryReader(stream))
                {
                    message.Type           = (SocketMessageType)reader.ReadInt32();
                    message.SenderName     = (string)Helper.ReadBinary(reader, typeof(string));
                    message.SenderEndPoint = reader.ReadIpEndPoint();
                    var length = reader.ReadInt32();
                    if (length > 0)
                    {
                        message.Data = reader.ReadBytes(length);
                    }
                }
            }
            catch { return(null); }
            return(message);
        }
Ejemplo n.º 2
0
        public static byte[] Write(EndPointMessage message)
        {
            byte[] buf    = null;
            var    stream = new MemoryStream();

            using (var writer = new BinaryWriter(stream))
            {
                writer.Write((int)message.Type);
                Helper.WriteBinary(writer, message.SenderName);
                writer.WriteEndPoint(message.SenderEndPoint);
                writer.Write(message.Data?.Length ?? 0);
                if (message.Data != null)
                {
                    writer.Write(message.Data);
                }
                writer.Flush();
                buf = stream.ToArray();
            }
            if (buf.Length > 1000)
            {
                buf = Helper.WriteGZip(buf);
            }
            message.Lenght = (uint)buf.Length;
            return(buf);
        }