public Channel(IPAddress ip, int port) { var settings = new MulticastSettings { Address = ip, Port = port, TimeToLive = 3 }; _listener = new MulticastListener(settings); _broadcaster = new MulticastBroadcaster(settings); _subject = new Subject <Message>(); _listener.Received.Subscribe(OnReceive); }
private void button1_Click(object sender, EventArgs e) { Console.WriteLine("Listen"); button1.Enabled = false; //using ( var receiver = new MulticastListener(testSettings); //) { receiver.StartListening( bytes => { var listen = Encoding.UTF8.GetString(bytes); Console.WriteLine(new { listen }); button1.Invoke( new Action( delegate { button1.Text = listen; } ) ); } ); // await next click? } }
private void button1_Click(object sender, EventArgs e) { Console.WriteLine("Listen"); button1.Enabled = false; //using ( var receiver = new MulticastListener(testSettings); //) { receiver.StartListening( bytes => { var listen = Encoding.UTF8.GetString(bytes); Console.WriteLine(new { listen }); button1.Invoke( new Action( delegate { button1.Text = listen; } ) ); } ); // await next click? } }
private void ReceiveCallback(IAsyncResult ar) { try { MulticastListener receiver = (MulticastListener)(ar.AsyncState); UdpClient udpClient = receiver.UdpClient; IPEndPoint ipEndPoint = receiver.LocalIPEndPoint; byte[] receiveBytes = udpClient.EndReceive(ar, ref ipEndPoint); OnReceive(receiveBytes); AsyncCallback receiveCallback = new AsyncCallback(ReceiveCallback); UdpClient.BeginReceive(receiveCallback, this); } catch (ObjectDisposedException) { // expected exception fired when we close - swallow it up } catch (Exception ex) { throw ex; } }