using System.Net; using System.Net.Sockets; namespace InnovEnergy.Lib.Utils.Net; public static class UdpExtensions { public static Int32 SendDatagram(this UdpClient udpClient, Byte[] data, IPEndPoint endPoint) { return udpClient.Send(data, data.Length, endPoint); } public static Int32 SendDatagram(this UdpClient udpClient, UdpDatagram datagram) { var payload = datagram.Payload; var data = payload as Byte[] ?? payload.ToArray(payload.Count); return udpClient.Send(data, data.Length, datagram.EndPoint); } public static UdpDatagram ReadDatagram(this UdpClient udpClient) { var endPoint = new IPEndPoint(0, 0); var datagram = udpClient.Receive(ref endPoint); return new UdpDatagram(datagram, endPoint); } } public record UdpDatagram(IReadOnlyList Payload, IPEndPoint EndPoint);