Пример #1
0
        private void InitView()
        {
            Content = new StackLayout()
            {
                Padding  = new Thickness(0, Device.OnPlatform(20, 0, 0), 0, 0),
                Children =
                {
                    new ClientConnectView("239.192.0.1",                                         11811, this)
                    {
                        ConnectTapped = async(s,                     i) =>
                        {
                            await _client.JoinMulticastGroupAsync(s, i, Global.DefaultCommsInterface);
                            _canceller = new CancellationTokenSource();

                            _client.MessageReceived += (sender,      args) =>
                            {
                                var data = args.ByteData.ToStringFromUTF8Bytes();
                                var from = String.Format("{0}:{1}",  args.RemoteAddress, args.RemotePort);

                                var msg = new Message
                                {
                                    Text       = data,
                                    DetailText = String.Format("<Received from {1} at {0}>",DateTime.Now.ToString("HH:mm:ss"), from)
                                };

                                _messagesSub.OnNext(msg);
                            };

                            return(true);
                        },
                        DisconnectTapped = async() =>
                        {
                            var bytes = "<EOF>".ToUTF8Bytes();
                            await _client.SendMulticastAsync(bytes);

                            _canceller.Cancel();
                            await _client.DisconnectAsync();
                        }
                    },
                    new MessagesView(_messagesObs,                   true)
                    {
                        SendData = async s =>
                        {
                            var bytes = s.ToUTF8Bytes();
                            await _client.SendMulticastAsync(bytes);

                            return(new Message
                            {
                                Text = s,
                                DetailText = String.Format("Sent at {0}",DateTime.Now.ToString("HH:mm:ss"))
                            });
                        }
                    }
                }
            };
        }
Пример #2
0
        public async void Disconnect()
        {
            if (joined)
            {
                await receiver.DisconnectAsync();

                joined = false;
            }
            receiver.Dispose();
            receiver = null;
        }
Пример #3
0
        public async void Stop()
        {
            if (!connected)
            {
                return;
            }

            await receiver.DisconnectAsync();

            receiver.Dispose();

            await sender.DisconnectAsync();

            sender.Dispose();

            connected = false;
        }
Пример #4
0
 protected override async void OnDisappearing()
 {
     base.OnDisappearing();
     await _udpSocketMulticastClient.DisconnectAsync();
 }
Пример #5
0
 protected override async void OnDisappearing()
 {
     base.OnDisappearing();
     _udpSocketMulticastClient.MessageReceived -= UdpSocketMulticastClientOnMessageReceived;
     await _udpSocketMulticastClient.DisconnectAsync();
 }