Esempio n. 1
0
        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;
                }
            }