public void Disconnect()
 {
     Listening = false;
     if (provider != null)
     {
         if (isAdvertising)
         {
             provider.StopAdvertising();
         }
         provider = null;
     }                                                                                                      // StopAdvertising relentlessly causes a crash if not advertising.
     if (socketListener != null)
     {
         socketListener.Dispose(); socketListener = null;
     }
     if (writer != null)
     {
         writer.DetachStream(); writer.Dispose(); writer = null;
     }
     if (reader != null)
     {
         reader.DetachStream(); reader.Dispose(); reader = null;
     }
     if (socket != null)
     {
         socket.Dispose(); socket = null;
     }
     if (listeningTask != null)
     {
         listeningTask = null;
     }
 }
 private void HandleConnectionReceived(StreamSocketListener listener,
                                       StreamSocketListenerConnectionReceivedEventArgs args)
 {
     provider.StopAdvertising();
     listener.Dispose();
     DoConnect(args.Socket);
 }
        private async void Disconnect()
        {
            if (_rfcommProvider != null)
            {
                _rfcommProvider.StopAdvertising();
                _rfcommProvider = null;
            }

            if (_socketListener != null)
            {
                _socketListener.Dispose();
                _socketListener = null;
            }

            if (_writer != null)
            {
                _writer.DetachStream();
                _writer = null;
            }

            if (_socket != null)
            {
                _socket.Dispose();
                _socket = null;
            }
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                ListenButton.IsEnabled     = true;
                DisconnectButton.IsEnabled = false;
                ConversationListBox.Items.Clear();
            });
        }
Exemple #4
0
        async void OnConnectionReceived(StreamSocketListener listener, StreamSocketListenerConnectionReceivedEventArgs args)
        {
            try
            {
                Log("Accepted.");
                provider.StopAdvertising();
                await listener.CancelIOAsync();

                StreamSocket socket = args.Socket;
                Log("Start connection.");
                var input_stream = socket.InputStream;
                while (true)
                {
                    Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer(1024);
                    var n = await input_stream.ReadAsync(buffer, buffer.Capacity, Windows.Storage.Streams.InputStreamOptions.Partial);

                    byte[] bytes = buffer.ToArray();
                    String text  = System.Text.Encoding.UTF8.GetString(bytes, 0, (int)n.Length);
                    Log($"Received: {text}");
                    var notificationData = JsonConvert.DeserializeObject <NotificationData>(text);
                    ShowNotification(notificationData.app_name, notificationData.title, notificationData.content);
                }
            }
            catch (Exception error)
            {
                Log(error.ToString());
            }
        }
        /// <summary>
        /// Cleanup Bluetooth resources
        /// </summary>
        private void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }

            ServiceName.Visibility     = Visibility.Collapsed;
            ServerButton.IsEnabled     = true;
            ClientButton.IsEnabled     = true;
            DisconnectButton.IsEnabled = false;
            ConversationListBox.Items.Clear();
        }
        async void OnConnectionReceived(StreamSocketListener listener, StreamSocketListenerConnectionReceivedEventArgs args)
        {
            try
            {
                Debug.WriteLine("Received.");
                provider.StopAdvertising();
                await listener.CancelIOAsync();

                StreamSocket socket = args.Socket;
                Debug.WriteLine("Start connection.");
                var input_stream = socket.InputStream;
                while (true)
                {
                    Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer(1024);
                    var n = await input_stream.ReadAsync(buffer, buffer.Capacity, Windows.Storage.Streams.InputStreamOptions.Partial);

                    byte[] bytes = buffer.ToArray();
                    String text  = System.Text.Encoding.UTF8.GetString(bytes, 0, (int)n.Length);
                    Debug.WriteLine($"Received: {text}");
                    ShowNotification("app_name", "title", text);
                }
            }
            catch (Exception error)
            {
                Debug.WriteLine(error.ToString());
            }
        }
Exemple #7
0
        private async void Disconnect()
        {
            if (_rfcommProvider != null)
            {
                _rfcommProvider.StopAdvertising();
                _rfcommProvider = null;
            }

            if (_controllerSocketListener != null)
            {
                _controllerSocketListener.Dispose();
                _controllerSocketListener = null;
            }

            if (_writer != null)
            {
                _writer.DetachStream();
                _writer = null;
            }

            if (_socket != null)
            {
                _socket.Dispose();
                _socket = null;
            }
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => {
                ControConnButton.IsEnabled = true;
                //回归正方向
            });
        }
Exemple #8
0
        /// <summary> Clientとの接続を切断 </summary>
        public void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (socket != null)
            {
                if (socket.InputStream != null)
                {
                    socket.InputStream.Dispose();
                }

                if (socket.OutputStream != null)
                {
                    socket.OutputStream.Dispose();
                }
                socket.Dispose();
                socket = null;
            }
        }
Exemple #9
0
        /// <summary>
        /// Cleanup Bluetooth resources
        /// </summary>
        private void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }

            ListenButton.IsEnabled     = true;
            DisconnectButton.IsEnabled = false;
            ConversationListBox.Items.Clear();
        }
        private async void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }
            await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
            {
                // restart server;
                Debug.WriteLine("Restarting Server");
                await InitRfcommServer();
            });
        }
        private async void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                Button_server_start.IsEnabled      = true;
                Button_server_disconnect.IsEnabled = false;
            });
        }
Exemple #12
0
        /// <summary>
        /// 切断
        /// </summary>
        private async void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }
            await Dispatcher.BeginInvoke(
                new Action(() => {
                ConnectButton.IsEnabled = true;
            })
                );
        }
        public void Disconnect()
        {
            if (_rfcommProvider != null)
            {
                _rfcommProvider.StopAdvertising();
                _rfcommProvider = null;
            }

            if (_socketListener != null)
            {
                _socketListener.Dispose();
                _socketListener = null;
            }

            if (_writer != null)
            {
                _writer.DetachStream();
                _writer = null;
            }

            if (_socket != null)
            {
                _socket.Dispose();
                _socket = null;
            }

            _isInitialized = false;

            NotifyClientDisconnected();
        }
        private async void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }
            //await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            //{
            //    ListenButton.IsEnabled = true;
            //    DisconnectButton.IsEnabled = false;
            //    ConversationListBox.Items.Clear();
            //});
        }
Exemple #15
0
        private void Stop(bool stopListener)
        {
            if (InvokeRequired)
            {
                Invoke(new MethodInvoker(delegate
                {
                    Stop(stopListener);
                }));
                return;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }

            if (stopListener && socketListener != null)
            {
                if (rfcommProvider != null)
                {
                    rfcommProvider.StopAdvertising();
                    rfcommProvider = null;
                }

                socketListener.Dispose();
                socketListener = null;

                startButton.Enabled = true;
                stopButton.Enabled  = false;
                status.Text         = "Stopped.";
            }
            sendButton.Enabled = false;
        }
        private void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }
        }
Exemple #17
0
        void OnConnectionReceived(StreamSocketListener listener, StreamSocketListenerConnectionReceivedEventArgs args)
        {
            // Stop advertising/listening so that we're only serving one client
            provider.StopAdvertising();
            //await listener.Close();
            var socket = args.Socket;


            // The client socket is connected. At this point the App can wait for
            // the user to take some action, for example, click a button to receive a file
            // from the device, which could invoke the Picker and then save the
            // received file to the picked location. The transfer itself would use
            // the Sockets API and not the Rfcomm API, and so is omitted here for
            // brevity.
        }
        protected void Disconnect()
        {
            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            ServerInitiated = false;
        }
        public void DeInitialize()
        {
            if (cancellationTokenSource != null)
            {
                cancellationTokenSource.Cancel();
            }
            cancelReceiving = true;

            _provider.StopAdvertising();
            _provider = null;

            _listener.Dispose();
            _listener = null;

            _streamSocket.Dispose();
            _streamSocket = null;
        }
Exemple #20
0
        private void Disconnect()
        {
            isConnected = false;

            if (rfcommProvider != null)
            {
                rfcommProvider.StopAdvertising();
                rfcommProvider = null;
            }

            if (socketListener != null)
            {
                socketListener.Dispose();
                socketListener = null;
            }

            if (writer != null)
            {
                writer.DetachStream();
                writer = null;
            }

            if (reader != null)
            {
                reader.DetachStream();
                reader = null;
            }

            if (socket != null)
            {
                socket.Dispose();
                socket = null;
            }

            if (bluetoothDevice != null)
            {
                //bluetoothDevice.Close();
                bluetoothDevice = null;
            }

            System.Diagnostics.Debug.WriteLine("Disconnected from Client");
            OnDisconnected();

            Initialize();
        }
Exemple #21
0
 private void _OnConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
 {
     _Provider.StopAdvertising();
     Socket = args.Socket;
     System.Diagnostics.Debug.WriteLine("OnConnect");
     if (Socket != null)
     {
         SendDataWriter           = new DataWriter(Socket.OutputStream);
         ConnectionEstablishState = ConnectionEstablishState.Succeeded;
         _SendDetectorTimer       = new Timer(new TimerCallback(_SendDetectorTimerCallback), null, 0, 500);
         OnConnectionEstalblishResult?.Invoke(this, ConnectionEstablishState);
     }
     else
     {
         ConnectionEstablishState = ConnectionEstablishState.Failed;
         OnConnectionEstalblishResult?.Invoke(this, ConnectionEstablishState);
     }
     _ReceiveTask = ReceiveAsync();
 }
        private void Disconnect()
        {
            if (SocketListener != null)
            {
                SocketListener.Dispose();
                SocketListener = null;
            }

            try {
                if (RfcommProvider != null)
                {
                    RfcommProvider.StopAdvertising();
                    RfcommProvider = null;
                }
            } catch (Exception ex) {
                this.Logger.Info(ex, "サーバ切断中にエラー発生!");
            }

            if (SocketListener != null)
            {
                SocketListener.Dispose();
                SocketListener = null;
            }

            if (SocketWriter != null)
            {
                SocketWriter.DetachStream();
                SocketWriter = null;
            }

            if (SocketReader != null)
            {
                SocketReader.DetachStream();
                SocketReader = null;
            }

            if (Socket != null)
            {
                Socket.Dispose();
                Socket = null;
            }
        }
Exemple #23
0
 //-------------------------------------------------------------------------zamykanie polaczenia
 private void disconnect()
 {
     if (reader != null)
     {
         reader.Dispose();
         reader = null;
     }
     if (writer != null)
     {
         writer.Dispose();
         writer = null;
     }
     if (socket != null)
     {
         socket.Dispose();
         socket = null;
     }
     if (stream != null)
     {
         stream.Dispose();
         stream = null;
     }
     if (buffer != null)
     {
         buffer = null;
     }
     if (rfcommProvider != null)
     {
         rfcommProvider.StopAdvertising();
         rfcommProvider = null;
     }
     if (socketListener != null)
     {
         socketListener.Dispose();
         socketListener = null;
     }
 }
Exemple #24
0
 protected override Task DisposeCoreAsync()
 {
     _serviceProvider.StopAdvertising();
     _listener.Dispose();
     return(Task.CompletedTask);
 }
Exemple #25
0
        private async void OnConnectionReceivedAsync(
            StreamSocketListener listener,
            StreamSocketListenerConnectionReceivedEventArgs args)
        {
            // Stop advertising/listening so that we're only serving one client
            _provider.StopAdvertising();
            listener.Dispose();
            listener = null;

            _socket = args.Socket;

            // Note - this is the supported way to get a Bluetooth device from a given socket
            var remoteDevice = await BluetoothDevice.FromHostNameAsync(_socket.Information.RemoteHostName);

            _writer = new DataWriter(_socket.OutputStream);
            var  reader = new DataReader(_socket.InputStream);
            bool remoteDisconnection = false;

            Debug.WriteLine("Connected to Client: " + remoteDevice.Name);

            // Infinite read buffer loop
            while (true)
            {
                try
                {
                    // Based on the protocol we've defined, the first uint is the size of the message
                    uint readLength = await reader.LoadAsync(sizeof(uint));

                    // Check if the size of the data is expected (otherwise the remote has already terminated the connection)
                    if (readLength < sizeof(uint))
                    {
                        remoteDisconnection = true;
                        break;
                    }
                    uint currentLength = reader.ReadUInt32();

                    // Load the rest of the message since you already know the length of the data expected.
                    readLength = await reader.LoadAsync(currentLength);

                    // Check if the size of the data is expected (otherwise the remote has already terminated the connection)
                    if (readLength < currentLength)
                    {
                        remoteDisconnection = true;
                        break;
                    }
                    string message = reader.ReadString(currentLength);

                    var parameter = JsonConvert.DeserializeObject <RemoteParameter>(message);

                    string serializedData = await CommandReceived(parameter);
                }
                // Catch exception HRESULT_FROM_WIN32(ERROR_OPERATION_ABORTED).
                catch (Exception ex) when((uint)ex.HResult == 0x800703E3)
                {
                    Debug.WriteLine("Client Disconnected Successfully");
                    break;
                }
            }

            reader.DetachStream();
            if (remoteDisconnection)
            {
                Disconnect();
                Debug.WriteLine("Client disconnected");
            }
        }
Exemple #26
0
 public void StopAdvertising()
 => _provider.StopAdvertising();
Exemple #27
0
 internal void Stop()
 {
     // Stop advertising/listening so that we're only serving one client
     _provider.StopAdvertising();
 }