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(); }); }
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()); } }
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; //回归正方向 }); }
/// <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; } }
/// <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; }); }
/// <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(); //}); }
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; } }
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; }
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(); }
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; } }
//-------------------------------------------------------------------------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; } }
protected override Task DisposeCoreAsync() { _serviceProvider.StopAdvertising(); _listener.Dispose(); return(Task.CompletedTask); }
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"); } }
public void StopAdvertising() => _provider.StopAdvertising();
internal void Stop() { // Stop advertising/listening so that we're only serving one client _provider.StopAdvertising(); }