private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs args) { WiFiDirectConnectionRequest ConnectionRequest = args.GetConnectionRequest(); WiFiDirectDevice wfdDevice = await WiFiDirectDevice.FromIdAsync(ConnectionRequest.DeviceInformation.Id); EndpointPairs = wfdDevice.GetConnectionEndpointPairs(); _ConnectionEstablishState = ConnectionEstablishState.Succeeded; OnConnectionEstalblishResult?.Invoke(this, _ConnectionEstablishState); }
private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs args) { WiFiDirectConnectionRequest connectionRequest = args.GetConnectionRequest(); bool success = await Dispatcher.RunTaskAsync(async() => { return(await HandleConnectionRequestAsync(connectionRequest)); }); if (!success) { // Decline the connection request //rootPage.NotifyUserFromBackground($"Connection request from {connectionRequest.DeviceInformation.Name} was declined", NotifyType.ErrorMessage); connectionRequest.Dispose(); } }
private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs args) { WiFiDirectConnectionRequest ConnectionRequest = args.GetConnectionRequest(); // Prompt the user to accept/reject the connection request // If rejected, exit // Connect to the remote device WiFiDirectDevice wfdDevice = await WiFiDirectDevice.FromIdAsync(ConnectionRequest.DeviceInformation.Id); // Get the local and remote IP addresses IReadOnlyList <Windows.Networking.EndpointPair> EndpointPairs = wfdDevice.GetConnectionEndpointPairs(); // Establish standard WinRT socket with above IP addresses }
/// <summary> /// 广播者接收到请求连接消息后的操作 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs args) { try { WiFiDirectConnectionRequest ConnectionRequest = args.GetConnectionRequest(); WiFiDirectDevice wfdDevice = await WiFiDirectDevice.FromIdAsync(ConnectionRequest.DeviceInformation.Id); //与之连接过的列表 EndpointPairs = wfdDevice.GetConnectionEndpointPairs(); //StartUDPServer("50001"); //EstablishSocketFromAdvertiser(EndpointPairs[0].LocalHostName, "50001"); //Invoke(() => { TextBlock_ConnectedState.Text = "连接到" + EndpointPairs[0].LocalHostName.ToString(); }); } catch (Exception exp) { Invoke(() => { TextBlock_ConnectedState.Text = exp.Message; }); } }
void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) { WiFiDirectDevice wfdDevice; try { var connectionRequest = connectionEventArgs.GetConnectionRequest(); WiFiDirectConnectionParameters connectionParams = new WiFiDirectConnectionParameters(); connectionParams.GroupOwnerIntent = 15; wfdDevice = WiFiDirectDevice.FromIdAsync(connectionRequest.DeviceInformation.Id, connectionParams).AsTask().Result; // Register for the ConnectionStatusChanged event handler wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged; mConnected[extractMAC(wfdDevice.DeviceId)] = wfdDevice; mGroupOwner = true; } catch (Exception ex) { Debug.WriteLine("Connect operation threw an exception: " + ex.Message); wfdDevice = null; } if (wfdDevice != null) { OnConnectionStatusChanged(wfdDevice, null); } }
private async void OnConnectionRequested(WiFiDirectConnectionListener listener, WiFiDirectConnectionRequestedEventArgs eventArgs) { if (_listener != null) { _listener.LogMessage("Connection Requested..."); } bool acceptConnection = true; if (!AutoAccept && _prompt != null) { acceptConnection = _prompt.AcceptIncommingConnection(); } try { WiFiDirectConnectionRequest request = eventArgs.GetConnectionRequest(); if (acceptConnection) { DeviceInformation deviceInformation = request.DeviceInformation; string deviceId = deviceInformation.Id; // Must call FromIdAsync first var tcsWiFiDirectDevice = new TaskCompletionSource <WiFiDirectDevice>(); var wfdDeviceTask = tcsWiFiDirectDevice.Task; tcsWiFiDirectDevice.SetResult(await WiFiDirectDevice.FromIdAsync(deviceId)); // Get the WiFiDirectDevice object WiFiDirectDevice wfdDevice = await wfdDeviceTask; // Now retrieve the endpoint pairs, which includes the IP address assigned to the peer var endpointPairs = wfdDevice.GetConnectionEndpointPairs(); string remoteHostName = ""; if (endpointPairs.Any()) { EndpointPair endpoint = endpointPairs[0]; remoteHostName = endpoint.RemoteHostName.DisplayName; } else { throw new Exception("Can't retrieve endpoint pairs"); } // Add handler for connection status changed wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged; // Store the connected peer lock (_threadObject) { _connectedDevices.Add(wfdDevice.DeviceId, wfdDevice); } // Notify Listener if (_listener != null) { _listener.OnDeviceConnected(remoteHostName); } } else { if (_listener != null) { _listener.LogMessage("Declined"); } } } catch (Exception ex) { if (_listener != null) { _listener.OnAsyncException(ex.ToString()); } return; } }
private static void WifiConnectionListener_ConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs args) { Debug.WriteLine("ConnRequested: " + args.GetConnectionRequest().DeviceInformation.Id); UDPServer.Current.MessageReceived += Current_MessageReceived; }
private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) { try { var connectionRequest = connectionEventArgs.GetConnectionRequest(); var tcs = new TaskCompletionSource<bool>(); var dialogTask = tcs.Task; var messageDialog = new MessageDialog("Connection request received from " + connectionRequest.DeviceInformation.Name, "Connection Request"); // Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers messageDialog.Commands.Add(new UICommand("Accept", null, 0)); messageDialog.Commands.Add(new UICommand("Decline", null, 1)); // Set the command that will be invoked by default messageDialog.DefaultCommandIndex = 1; // Set the command to be invoked when escape is pressed messageDialog.CancelCommandIndex = 1; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async () => { // Show the message dialog var commandChosen = await messageDialog.ShowAsync(); tcs.SetResult((commandChosen.Label == "Accept") ? true : false); }); var fProceed = await dialogTask; if (fProceed == true) { var tcsWiFiDirectDevice = new TaskCompletionSource<WiFiDirectDevice>(); var wfdDeviceTask = tcsWiFiDirectDevice.Task; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async () => { try { rootPage.NotifyUser("Connecting to " + connectionRequest.DeviceInformation.Name + "...", NotifyType.StatusMessage); WiFiDirectConnectionParameters connectionParams = new WiFiDirectConnectionParameters(); connectionParams.GroupOwnerIntent = Convert.ToInt16(txtGOIntent.Text); // IMPORTANT: FromIdAsync needs to be called from the UI thread tcsWiFiDirectDevice.SetResult(await WiFiDirectDevice.FromIdAsync(connectionRequest.DeviceInformation.Id, connectionParams)); } catch (Exception ex) { rootPage.NotifyUser("FromIdAsync task threw an exception: " + ex.ToString(), NotifyType.ErrorMessage); } }); WiFiDirectDevice wfdDevice = await wfdDeviceTask; // Register for the ConnectionStatusChanged event handler wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged; await Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { ConnectedDevice connectedDevice = new ConnectedDevice("Waiting for client to connect...", wfdDevice, null); _connectedDevices.Add(connectedDevice); }); var EndpointPairs = wfdDevice.GetConnectionEndpointPairs(); _listenerSocket = null; _listenerSocket = new StreamSocketListener(); _listenerSocket.ConnectionReceived += OnSocketConnectionReceived; await _listenerSocket.BindEndpointAsync(EndpointPairs[0].LocalHostName, Globals.strServerPort); rootPage.NotifyUserFromBackground("Devices connected on L2, listening on IP Address: " + EndpointPairs[0].LocalHostName.ToString() + " Port: " + Globals.strServerPort, NotifyType.StatusMessage); } else { // Decline the connection request rootPage.NotifyUserFromBackground("Connection request from " + connectionRequest.DeviceInformation.Name + " was declined", NotifyType.ErrorMessage); connectionRequest.Dispose(); } } catch (Exception ex) { rootPage.NotifyUserFromBackground("Connect operation threw an exception: " + ex.Message, NotifyType.ErrorMessage); } }
private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) { WiFiDirectConnectionRequest connectionRequest = connectionEventArgs.GetConnectionRequest(); bool success = await Dispatcher.RunTaskAsync(async () => { return await HandleConnectionRequestAsync(connectionRequest); }); if (!success) { // Decline the connection request rootPage.NotifyUserFromBackground($"Connection request from {connectionRequest.DeviceInformation.Name} was declined", NotifyType.ErrorMessage); connectionRequest.Dispose(); } }
private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) { try { var connectionRequest = connectionEventArgs.GetConnectionRequest(); var tcs = new TaskCompletionSource <bool>(); var dialogTask = tcs.Task; var messageDialog = new MessageDialog("Connection request received from " + connectionRequest.DeviceInformation.Name, "Connection Request"); // Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers messageDialog.Commands.Add(new UICommand("Accept", null, 0)); messageDialog.Commands.Add(new UICommand("Decline", null, 1)); // Set the command that will be invoked by default messageDialog.DefaultCommandIndex = 1; // Set the command to be invoked when escape is pressed messageDialog.CancelCommandIndex = 1; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async() => { // Show the message dialog var commandChosen = await messageDialog.ShowAsync(); tcs.SetResult((commandChosen.Label == "Accept") ? true : false); }); var fProceed = await dialogTask; if (fProceed == true) { var tcsWiFiDirectDevice = new TaskCompletionSource <WiFiDirectDevice>(); var wfdDeviceTask = tcsWiFiDirectDevice.Task; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async() => { try { rootPage.NotifyUser("Connecting to " + connectionRequest.DeviceInformation.Name + "...", NotifyType.StatusMessage); WiFiDirectConnectionParameters connectionParams = new WiFiDirectConnectionParameters(); connectionParams.GroupOwnerIntent = Convert.ToInt16(txtGOIntent.Text); // IMPORTANT: FromIdAsync needs to be called from the UI thread tcsWiFiDirectDevice.SetResult(await WiFiDirectDevice.FromIdAsync(connectionRequest.DeviceInformation.Id, connectionParams)); } catch (Exception ex) { rootPage.NotifyUser("FromIdAsync task threw an exception: " + ex.ToString(), NotifyType.ErrorMessage); } }); WiFiDirectDevice wfdDevice = await wfdDeviceTask; // Register for the ConnectionStatusChanged event handler wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged; await Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { ConnectedDevice connectedDevice = new ConnectedDevice("Waiting for client to connect...", wfdDevice, null); _connectedDevices.Add(connectedDevice); }); var EndpointPairs = wfdDevice.GetConnectionEndpointPairs(); _listenerSocket = null; _listenerSocket = new StreamSocketListener(); _listenerSocket.ConnectionReceived += OnSocketConnectionReceived; await _listenerSocket.BindEndpointAsync(EndpointPairs[0].LocalHostName, Globals.strServerPort); rootPage.NotifyUserFromBackground("Devices connected on L2, listening on IP Address: " + EndpointPairs[0].LocalHostName.ToString() + " Port: " + Globals.strServerPort, NotifyType.StatusMessage); } else { // Decline the connection request rootPage.NotifyUserFromBackground("Connection request from " + connectionRequest.DeviceInformation.Name + " was declined", NotifyType.ErrorMessage); connectionRequest.Dispose(); } } catch (Exception ex) { rootPage.NotifyUserFromBackground("Connect operation threw an exception: " + ex.Message, NotifyType.ErrorMessage); } }