PeerFinder.Start Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
Start() |
Rend une application détectable pour des homologues distants. |
Start(String) |
Rend une application détectable pour des homologues distants. |
Start()
Rend une application détectable pour des homologues distants.
public:
static void Start();
/// [Windows.Foundation.Metadata.Overload("Start")]
static void Start();
[Windows.Foundation.Metadata.Overload("Start")]
public static void Start();
function start()
Public Shared Sub Start ()
- Attributs
Configuration requise pour Windows
Fonctionnalités de l’application |
ID_CAP_NETWORKING [Windows Phone]
ID_CAP_NETWORKING [Windows Phone]
ID_CAP_PROXIMITY [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
Exemples
protected override void OnNavigatedTo(NavigationEventArgs e)
{
DisplayNameTextBox.Text = Windows.Networking.Proximity.PeerFinder.DisplayName;
Windows.Networking.Proximity.PeerFinder.ConnectionRequested += ConnectionRequested;
// If activated from launch or from the background, create a peer connection.
var args = e.Parameter as Windows.ApplicationModel.Activation.LaunchActivatedEventArgs;
if (args != null && args.Kind == Windows.ApplicationModel.Activation.ActivationKind.Launch)
{
if (args.Arguments == "Windows.Networking.Proximity.PeerFinder:StreamSocket")
{
AdvertiseForPeersButton_Click(null, null);
}
}
}
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
if (_started)
{
// Detach the callback handler (there can only be one PeerConnectProgress handler).
Windows.Networking.Proximity.PeerFinder.TriggeredConnectionStateChanged -= TriggeredConnectionStateChanged;
// Detach the incoming connection request event handler.
Windows.Networking.Proximity.PeerFinder.ConnectionRequested -= ConnectionRequested;
Windows.Networking.Proximity.PeerFinder.Stop();
CloseSocket();
_started = false;
}
}
// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;
async private void WriteMessageText(string message, bool overwrite = false)
{
await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
if (overwrite)
MessageBlock.Text = message;
else
MessageBlock.Text += message;
});
}
bool _started = false;
// Click event handler for "Advertise" button.
private void AdvertiseForPeersButton_Click(object sender, RoutedEventArgs e)
{
if (_started)
{
WriteMessageText("You are already advertising for a connection.\n");
return;
}
Windows.Networking.Proximity.PeerFinder.DisplayName = DisplayNameTextBox.Text;
if ((Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes &
Windows.Networking.Proximity.PeerDiscoveryTypes.Triggered) ==
Windows.Networking.Proximity.PeerDiscoveryTypes.Triggered)
{
Windows.Networking.Proximity.PeerFinder.TriggeredConnectionStateChanged +=
TriggeredConnectionStateChanged;
WriteMessageText("You can tap to connect a peer device that is " +
"also advertising for a connection.\n");
}
else
{
WriteMessageText("Tap to connect is not supported.\n");
}
if ((Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes &
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse) !=
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse)
{
WriteMessageText("Peer discovery using Wi-Fi Direct is not supported.\n");
}
Windows.Networking.Proximity.PeerFinder.Start();
_started = true;
}
private void TriggeredConnectionStateChanged(
object sender,
Windows.Networking.Proximity.TriggeredConnectionStateChangedEventArgs e)
{
if (e.State == Windows.Networking.Proximity.TriggeredConnectState.PeerFound)
{
WriteMessageText("Peer found. You may now pull your devices out of proximity.\n");
}
if (e.State == Windows.Networking.Proximity.TriggeredConnectState.Completed)
{
WriteMessageText("Connected. You may now send a message.\n");
SendMessage(e.Socket);
}
}
// Click event handler for "Browse" button.
async private void FindPeersButton_Click(object sender, RoutedEventArgs e)
{
if ((Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes &
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse) !=
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse)
{
WriteMessageText("Peer discovery using Wi-Fi Direct is not supported.\n");
return;
}
try
{
var peerInfoCollection = await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync();
if (peerInfoCollection.Count > 0)
{
// Connect to first peer found - example only.
// In your app, provide the user with a list of available peers.
ConnectToPeer(peerInfoCollection[0]);
}
}
catch (Exception err)
{
WriteMessageText("Error finding peers: " + err.Message + "\n");
}
}
async private void ConnectToPeer(Windows.Networking.Proximity.PeerInformation peerInfo)
{
WriteMessageText("Peer found. Connecting to " + peerInfo.DisplayName + "\n");
try
{
Windows.Networking.Sockets.StreamSocket socket =
await Windows.Networking.Proximity.PeerFinder.ConnectAsync(peerInfo);
WriteMessageText("Connection successful. You may now send messages.\n");
SendMessage(socket);
}
catch (Exception err)
{
WriteMessageText("Connection failed: " + err.Message + "\n");
}
requestingPeer = null;
}
// Click event handler for "Stop" button.
private void StopFindingPeersButton_Click(object sender, RoutedEventArgs e)
{
_started = false;
Windows.Networking.Proximity.PeerFinder.Stop();
if (proximitySocket != null) { CloseSocket(); }
}
// Handle external connection requests.
Windows.Networking.Proximity.PeerInformation requestingPeer;
private void ConnectionRequested(object sender,
Windows.Networking.Proximity.ConnectionRequestedEventArgs e)
{
requestingPeer = e.PeerInformation;
WriteMessageText("Connection requested by " + requestingPeer.DisplayName + ". " +
"Click 'Accept Connection' to connect.");
}
private void AcceptConnectionButton_Click(object sender, RoutedEventArgs e)
{
if (requestingPeer == null)
{
WriteMessageText("No peer connection has been requested.");
return;
}
ConnectToPeer(requestingPeer);
}
Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
DisplayNameTextBox.Text = Windows.Networking.Proximity.PeerFinder.DisplayName
AddHandler Windows.Networking.Proximity.PeerFinder.ConnectionRequested, AddressOf ConnectionRequested
' If activated from launch or from the background, create a peer connection.
Dim args = TryCast(e.Parameter, Windows.ApplicationModel.Activation.LaunchActivatedEventArgs)
If args IsNot Nothing AndAlso args.Kind = Windows.ApplicationModel.Activation.ActivationKind.Launch Then
If args.Arguments = "Windows.Networking.Proximity.PeerFinder:StreamSocket" Then
AdvertiseForPeersButton_Click()
End If
End If
End Sub
Protected Overrides Sub OnNavigatingFrom(e As Navigation.NavigatingCancelEventArgs)
If _started Then
' Detach the callback handler (there can only be one PeerConnectProgress handler).
RemoveHandler Windows.Networking.Proximity.PeerFinder.TriggeredConnectionStateChanged, AddressOf TriggeredConnectionStateChanged
' Detach the incoming connection request event handler.
RemoveHandler Windows.Networking.Proximity.PeerFinder.ConnectionRequested, AddressOf ConnectionRequested
Windows.Networking.Proximity.PeerFinder.Stop()
CloseSocket()
_started = False
End If
End Sub
' Write a message to MessageBlock on the UI thread.
Private Async Sub WriteMessageText(message As String, Optional overwrite As Boolean = False)
Await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
Sub()
If overwrite Then
MessageBlock.Text = message
Else
MessageBlock.Text &= message
End If
End Sub)
End Sub
Private _started As Boolean = False
' Click event handler for "Advertise" button.
Private Sub AdvertiseForPeersButton_Click()
If _started Then
WriteMessageText("You are already advertising for a connection." & vbCrLf)
Return
End If
Windows.Networking.Proximity.PeerFinder.DisplayName = DisplayNameTextBox.Text
If ((Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes And
Windows.Networking.Proximity.PeerDiscoveryTypes.Triggered) =
Windows.Networking.Proximity.PeerDiscoveryTypes.Triggered) Then
AddHandler Windows.Networking.Proximity.PeerFinder.TriggeredConnectionStateChanged,
AddressOf TriggeredConnectionStateChanged
WriteMessageText("You can tap to connect a peer device that is " &
"also advertising for a connection." & vbCrLf)
Else
WriteMessageText("Tap to connect is not supported." & vbCrLf)
End If
If (Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes And
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse) <>
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse Then
WriteMessageText("Peer discovery using Wifi-Direct is not supported." & vbCrLf)
End If
Windows.Networking.Proximity.PeerFinder.Start()
_started = True
End Sub
Private Sub TriggeredConnectionStateChanged(
sender As Object,
e As Windows.Networking.Proximity.TriggeredConnectionStateChangedEventArgs)
If e.State = Windows.Networking.Proximity.TriggeredConnectState.PeerFound Then
WriteMessageText("Peer found. You may now pull your devices out of proximity." & vbCrLf)
End If
If e.State = Windows.Networking.Proximity.TriggeredConnectState.Completed Then
WriteMessageText("Connected. You may now send a message." & vbCrLf)
SendMessage(e.Socket)
End If
End Sub
' Click event handler for "Browse" button.
Private Async Sub FindPeersButton_Click()
If (Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes And
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse) <>
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse Then
WriteMessageText("Peer discovery using Wifi-Direct is not supported." & vbCrLf)
Return
End If
Try
Dim peerInfoCollection = Await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync()
If peerInfoCollection.Count > 0 Then
' Connect to first peer found - example only.
' In your app, provide the user with a list of available peers.
ConnectToPeer(peerInfoCollection(0))
End If
Catch err As Exception
WriteMessageText("Error finding peers: " & err.Message & vbCrLf)
End Try
End Sub
Private Async Sub ConnectToPeer(peerInfo As Windows.Networking.Proximity.PeerInformation)
WriteMessageText("Peer found. Connecting to " & peerInfo.DisplayName & vbCrLf)
Try
Dim socket = Await Windows.Networking.Proximity.PeerFinder.ConnectAsync(peerInfo)
WriteMessageText("Connection successful. You may now send messages." & vbCrLf)
SendMessage(socket)
Catch err As Exception
WriteMessageText("Connection failed: " & err.Message & vbCrLf)
End Try
requestingPeer = Nothing
End Sub
' Click event handler for "Stop" button.
Private Sub StopFindingPeersButton_Click()
_started = False
Windows.Networking.Proximity.PeerFinder.Stop()
If proximitySocket IsNot Nothing Then CloseSocket()
End Sub
' Handle external connection requests.
Private requestingPeer As Windows.Networking.Proximity.PeerInformation
Private Sub ConnectionRequested(sender As Object,
e As Windows.Networking.Proximity.ConnectionRequestedEventArgs)
requestingPeer = e.PeerInformation
WriteMessageText("Connection requested by " & requestingPeer.DisplayName & ". " &
"Click 'Accept Connection' to connect.")
End Sub
Private Sub AcceptConnectionButton_Click()
If requestingPeer Is Nothing Then
WriteMessageText("No peer connection has been requested.")
Return
End If
ConnectToPeer(requestingPeer)
End Sub
Remarques
Vous pouvez appeler la méthode Start pour commencer le processus de recherche d’une application homologue et pour rendre votre application détectable aux homologues distants qui appellent la méthode FindAllPeersAsync . Un homologue est un appareil dont une application s’exécute au premier plan avec un AppId correspondant. Un homologue peut également avoir un ID de navigation correspondant qui est spécifié comme une autre identité. Pour plus d’informations, consultez AlternateIdentities.
Vous ne pouvez vous connecter qu’à un seul homologue à la fois si votre application est dans le rôle homologue ou client. Si votre application est dans le rôle hôte, vous pouvez connecter jusqu’à 5 clients à la fois.
Lorsqu’une application est activée en appuyant sur un appareil proche, les paramètres d’activation indiquent si PeerFinder doit être démarré ou si l’application a été lancée avec des arguments d’activation. Le format des paramètres d’activation est « Windows.Networking.Proximity.PeerFinder:StreamSocket Role=<Host|Client> « . Pour plus d’informations, consultez la section « Activation d’applications à l’aide de la proximité » de prise en charge de la proximité et de l’appui.
Important
Définissez toujours la propriété DisplayName sur une valeur unique pour votre application avant d’appeler la méthode Start .
Windows Phone 8
Wi-Fi Direct n’est pas pris en charge sur Windows Phone 8.
Voir aussi
S’applique à
Start(String)
Rend une application détectable pour des homologues distants.
public:
static void Start(Platform::String ^ peerMessage);
/// [Windows.Foundation.Metadata.Overload("StartWithMessage")]
static void Start(winrt::hstring const& peerMessage);
[Windows.Foundation.Metadata.Overload("StartWithMessage")]
public static void Start(string peerMessage);
function start(peerMessage)
Public Shared Sub Start (peerMessage As String)
Paramètres
- peerMessage
-
String
Platform::String
winrt::hstring
Message à remettre à l’appareil proche.
- Attributs
Configuration requise pour Windows
Fonctionnalités de l’application |
ID_CAP_NETWORKING [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
Remarques
Vous pouvez appeler la méthode Start pour commencer le processus de recherche d’une application homologue et pour rendre votre application détectable aux homologues distants qui appellent la méthode FindAllPeersAsync . Un homologue est un appareil dont une application s’exécute au premier plan avec un AppId correspondant. Un homologue peut également avoir un ID de navigation correspondant qui est spécifié comme une autre identité. Pour plus d’informations, consultez AlternateIdentities.
Vous pouvez utiliser cette surcharge de la méthode Start pour envoyer un message à une application homologue qui sera passée en tant qu’argument d’activation d’application.
Vous ne pouvez vous connecter qu’à un seul homologue à la fois si votre application est dans le rôle homologue ou client. Si votre application est dans le rôle hôte, vous pouvez connecter jusqu’à 5 clients à la fois.
Lorsqu’une application est activée en appuyant sur un appareil proche, les paramètres d’activation indiquent si PeerFinder doit être démarré ou si l’application a été lancée avec des arguments d’activation. Le format des paramètres d’activation est « Windows.Networking.Proximity.PeerFinder:StreamSocket Role=<Host|Client> « . Pour plus d’informations, consultez la section « Activation d’applications à l’aide de la proximité » de prise en charge de la proximité et de l’appui.
Important
Définissez toujours la propriété DisplayName sur une valeur unique pour votre application avant d’appeler la méthode Start.
Windows Phone 8
Wi-Fi Direct n’est pas pris en charge sur Windows Phone 8.