public static UdpMessage ReceiveMessage(byte[] message) { UdpMessage msg = new UdpMessage(); var offset = 1; msg.Type = (MessageType)message[0]; msg.ConnectionId = MessageConverter.ReadShort(message, ref offset); msg.Channel = MessageConverter.ReadShort(message, ref offset); msg.MessageId = MessageConverter.ReadShort(message, ref offset); msg.Payload = new byte[message.Length - offset]; Buffer.BlockCopy(message, offset, msg.Payload, 0, msg.Payload.Length); return msg; }
private async Task SendMessage(UdpMessage requestMessage) { var destination = Connections.FirstOrDefault( cr => cr.Channel.Equals(requestMessage.Channel) && !cr.Id.Equals(requestMessage.ConnectionId)); if (destination == null) return; await Client.SendAsync(requestMessage.Bytes, requestMessage.Bytes.Length, destination.IpEndPoint); destination.Duration.Restart(); }
public static byte[] CreateMessage(UdpMessage message) { return CreateMessage(message.Type, message.ConnectionId, message.Channel, message.MessageId, message.Payload); }