public async Task When_ListeningAndSendingMulticastOnIPV4_Then_MessagesAreSentAndReceived() { UInt16 universe = 1; using (var sender = new MulticastSacnSenderIPV4()) { using (var receiver = new MulticastSacnReceiverIPV4()) { DataPacket received = null; var hostname = Dns.GetHostName(); var ipAddresses = await Dns.GetHostAddressesAsync(hostname); receiver.OnDataPacketReceived += (sender, packet) => { received = packet; }; receiver.Listen(IPAddress.Any); receiver.JoinMulticastGroup(universe); var packet = new DataPacket(); packet.FramingLayer.SourceName = "Source name"; packet.FramingLayer.Universe = universe; packet.DMPLayer.PropertyValues = new byte[] { 1, 2, 3, 4 }; await sender.Send(packet); await Task.Delay(250); Assert.NotNull(received); } } }
static async Task Main(string[] args) { byte[] cid = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; UInt16 universe = 1; string sourceName = "My lovely source"; SacnPacketFactory factory = new SacnPacketFactory(cid, sourceName); using var sacnSender = new MulticastSacnSenderIPV4(); using Timer timer = new Timer(10000); timer.Elapsed += async(sender, e) => { var packets = factory.CreateUniverseDiscoveryPackets(new UInt16[] { universe }); foreach (var packet in packets) { await sacnSender.Send(packet); } }; timer.Start(); byte[] values = new byte[512]; while (true) { for (byte i = 0; i < 255; i++) { Array.Fill(values, i); var packet = factory.CreateDataPacket(universe, values); await sacnSender.Send(packet); await Task.Delay(1000 / 40); } } }