DatagramSocket.ConnectAsync 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
ConnectAsync(EndpointPair) |
Démarre une opération de connexion sur un DatagramSocket à une destination réseau distante spécifiée en tant qu’objet EndpointPair . |
ConnectAsync(HostName, String) |
Démarre une opération de connexion sur un DatagramSocket à une destination distante spécifiée par un nom d’hôte distant et un nom de service distant. |
ConnectAsync(EndpointPair)
Démarre une opération de connexion sur un DatagramSocket à une destination réseau distante spécifiée en tant qu’objet EndpointPair .
public:
virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair);
function connectAsync(endpointPair)
Public Function ConnectAsync (endpointPair As EndpointPair) As IAsyncAction
Paramètres
- endpointPair
- EndpointPair
Objet EndpointPair qui spécifie le nom d’hôte local ou l’adresse IP, le nom du service local ou le port UDP, le nom d’hôte distant ou l’adresse IP distante et le nom du service distant ou le port UDP distant pour la destination du réseau distant.
Retours
Opération de connexion asynchrone sur un objet DatagramSocket .
- Attributs
Configuration requise pour Windows
Fonctionnalités de l’application |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
Remarques
Cette méthode ConnectAsync(EndPointPair) sur un DatagramSocket est utilisée pour définir le point de terminaison local et distant où les datagrammes seront envoyés lors de l’utilisation de la propriété OutputStream . Cette méthode limite également les adresses IP distantes des paquets qui seront acceptés au nom d’hôte distant dans le paramètre endpointPair . Seuls les paquets entrants qui correspondent au point de terminaison distant dans le paramètre endpointPair déclenchent l’événement MessageReceived sur le DatagramSocket.
L’application peut ensuite envoyer des données réseau à la destination réseau distante en appelant la méthode WriteAsync sur la propriété OutputStream du DatagramSocket ou en passant le OutputStream à un objet DataWriter et en appelant les méthodes de l’objet DataWriter .
La propriété RemoteHostName du EndpointPair transmis dans le paramètre endpointPair peut contenir le nom d’hôte ou l’adresse IP de la destination distante. La propriété RemoteServiceName du EndpointPair transmis dans le paramètre endpointPair peut contenir le nom du service ou un port UDP de la destination distante. Si la propriété RemoteHostName contient un nom d’hôte, la méthode ConnectAsync(EndPointPair) résout le nom d’hôte distant en adresse IP. Si la propriété RemoteServiceName du EndpointPair contient un nom de service, la méthode ConnectAsync(EndPointPair) résout le nom du service distant en numéro de port UDP.
Les chaînes de noms de service qui sont reconnues par défaut sont les noms de service répertoriés dans le fichier %windir%\System32\drivers\etc\services sur l’ordinateur local. Toute autre valeur de nom de service entraîne une requête de service de noms vers des serveurs DNS (Domain Name System) pour les enregistrements DNS SRV.
Les propriétés RemoteHostName et RemoteServiceName doivent être fournies. Si RemoteHostName a la valeur null ou si RemoteServiceName a la valeur null ou une chaîne vide, une erreur se produit.
Si l’objet EndpointPair transmis dans le paramètre endpointPair contient une propriété Null LocalHostName , le système fournit l’adresse IP locale qui sera utilisée. Si l’objet EndpointPair transmis dans le paramètre endpointPair contient une propriété LocalServiceName vide, le système fournit le port UDP local qui sera utilisé.
Il existe deux façons d’utiliser un DatagramSocket pour envoyer des datagrammes UDP à une destination réseau distante :
- Utilisation de l’une des méthodes GetOutputStreamAsync .
- Après un appel réussi à la méthode ConnectAsync à l’aide de la propriété OutputStream .
Les méthodes GetOutputStreamAsync permettent à une application d’envoyer des datagrammes UDP à l’aide d’un objet DatagramSocket à plusieurs destinations réseau. Chaque fois que la méthode GetOutputStreamAsync est appelée, l’application peut définir des valeurs différentes pour les paramètres remoteHostName et remoteServiceName .
Pour recevoir des données à partir d’un point de terminaison distant unique sur l’objet DatagramSocket , une application doit affecter l’événement MessageReceived à un gestionnaire d’événements, puis appeler la méthode ConnectAsync(EndPointPair) avec le paramètre endpointPair défini sur les informations de point de terminaison distant. Le gestionnaire d’événements MessageReceived doit être défini avant toute opération de liaison ou de connexion, sinon une erreur se produit.
L’ordre typique des opérations est le suivant :
- Créez le DatagramSocket.
- Utilisez la propriété Control sur datagramSocket pour récupérer un objet DatagramSocketControl et définir des contrôles avancés. Cette étape n’est normalement pas nécessaire pour la plupart des applications.
- Attribuez l’événement MessageReceived à un gestionnaire d’événements.
- Appelez la méthode ConnectAsync pour vous connecter au point de terminaison distant.
- Utilisez la propriété OutputStream sur datagramSocket avec un objet DataWriter pour envoyer des messages au point de terminaison distant.
- Le gestionnaire d’événements MessageReceived est appelé chaque fois qu’un message du point de terminaison distant arrive. Les méthodes GetOutputStreamAsync diffèrent également de la méthode ConnectAsync lorsqu’une application utilise la méthode BindEndpointAsync ou BindServiceNameAsync pour se lier à un nom de service local ou à un port UDP. Avec les méthodes GetOutputStreamAsync , l’application reçoit des paquets provenant de n’importe quelle destination distante envoyée au nom du service local ou au port UDP. Avec les méthodes ConnectAsync, l’application reçoit uniquement les paquets de la destination distante passés en tant que paramètres aux méthodes ConnectAsync.
La méthode BindServiceNameAsync(String, NetworkAdapter) peut être utilisée pour spécifier une carte réseau avant d’appeler la méthode ConnectAsync(EndPointPair). L’adaptateur spécifié est utilisé pour l’opération de liaison. Si après avoir appelé la méthode BindServiceNameAsync(String, NetworkAdapter) et que le paramètre endpointPair passé à ConnectAsync(EndPointPair) spécifie un LocalHostName, la méthode ConnectAsync(EndPointPair) échoue.
La méthode ConnectAsync fonctionne uniquement pour les adresses IP unicast. Lorsque vous essayez d’appeler la méthode ConnectAsync avec une adresse IP de multidiffusion dans l’adresse IP distante définie dans le paramètre endpointPair , l’opération asynchrone se termine avec une erreur. Lors de la transmission de l’erreur à la méthode SocketError.GetStatus , la valeur retournée est SocketErrorStatus.HostNotFound.
L’utilisation de ConnectAsync avec une adresse IP de diffusion telle que 255.255.255.255 se connecte, mais ne diffuse que via la première carte réseau trouvée. Pour diffuser sur toutes les cartes disponibles, utilisez GetOutputStreamAsync.
Voir aussi
S’applique à
ConnectAsync(HostName, String)
Démarre une opération de connexion sur un DatagramSocket à une destination distante spécifiée par un nom d’hôte distant et un nom de service distant.
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("ConnectAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName);
function connectAsync(remoteHostName, remoteServiceName)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncAction
Paramètres
- remoteHostName
- HostName
Nom d’hôte ou adresse IP de la destination réseau distante.
- remoteServiceName
-
String
Platform::String
winrt::hstring
Nom du service ou port UDP de la destination du réseau distant.
Retours
Opération de connexion asynchrone sur un objet DatagramSocket .
- Attributs
Configuration requise pour Windows
Fonctionnalités de l’application |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
Remarques
La méthode ConnectAsync sur un DatagramSocket est utilisée pour définir le nom d’hôte distant ou l’adresse IP distante et le nom du service distant ou le numéro de port UDP où les datagrammes seront envoyés lors de l’utilisation de la propriété OutputStream . Cette méthode limite également les adresses IP distantes des paquets qui seront acceptés au paramètre remoteHostName . Seuls les paquets entrants qui correspondent au paramètre remoteHostName déclenchent l’événement MessageReceived sur le DatagramSocket.
L’application peut ensuite envoyer des données réseau à la destination réseau distante en appelant la méthode WriteAsync sur la propriété OutputStream du DatagramSocket ou en passant le OutputStream à un objet DataWriter et en appelant les méthodes de l’objet DataWriter .
Le paramètre remoteHostName peut contenir le nom d’hôte ou l’adresse IP de la destination distante. Le paramètre remoteServiceName peut contenir le nom du service ou un port UDP de la destination distante. Si le paramètre remoteHostName contient un nom d’hôte, la méthode ConnectAsync résout le nom d’hôte distant en une adresse IP. Si le paramètre remoteServiceName contient un nom de service, la méthode ConnectAsync résout le nom du service distant en un numéro de port UDP.
Les chaînes de noms de service qui sont reconnues par défaut par le paramètre remoteServiceName sont les noms de service répertoriés dans le fichier %windir%\System32\drivers\etc\services sur l’ordinateur local. Toute autre valeur de nom de service entraîne une requête de service de noms vers des serveurs DNS (Domain Name System) pour les enregistrements DNS SRV.
Les paramètres remoteHostName et remoteServiceName doivent être fournis. Si remoteHostName a la valeur null ou si remoteServiceName a la valeur null ou une chaîne vide, une erreur se produit.
Il existe deux façons d’utiliser un DatagramSocket pour envoyer des datagrammes UDP à une destination réseau distante :
- Utilisez l’une des méthodes GetOutputStreamAsync .
- Après un appel réussi à la méthode ConnectAsync , utilisez la propriété OutputStream .
Les méthodes GetOutputStreamAsync permettent à une application d’envoyer des datagrammes UDP à l’aide d’un objet DatagramSocket à plusieurs destinations réseau. Chaque fois que la méthode GetOutputStreamAsync est appelée, l’application peut définir des valeurs différentes pour les paramètres remoteHostName et remoteServiceName .
Pour recevoir des données à partir d’un point de terminaison unique sur l’objet DatagramSocket , une application doit affecter l’événement MessageReceived à un gestionnaire d’événements, puis appeler la méthode ConnectAsync avec les paramètres remoteHostName et remoteServiceName définis sur les informations du point de terminaison distant. Le gestionnaire d’événements MessageReceived doit être défini avant toute opération de liaison ou de connexion, sinon une erreur se produit.
L’ordre typique des opérations est le suivant :
- Créez le DatagramSocket.
- Utilisez la propriété Control sur datagramSocket pour récupérer un objet DatagramSocketControl et définir des contrôles avancés. Cette étape n’est normalement pas nécessaire pour la plupart des applications.
- Attribuez l’événement MessageReceived à un gestionnaire d’événements.
- Appelez la méthode ConnectAsync pour vous connecter au point de terminaison distant.
- Utilisez la propriété OutputStream sur datagramSocket avec un objet DataWriter pour envoyer des messages au point de terminaison distant.
- Le gestionnaire d’événements MessageReceived est appelé chaque fois qu’un message du point de terminaison distant arrive. Les méthodes GetOutputStreamAsync diffèrent également de la méthode ConnectAsync lorsqu’une application utilise la méthode BindEndpointAsync ou BindServiceNameAsync pour se lier à un nom de service local ou à un port UDP. Avec les méthodes GetOutputStreamAsync , l’application reçoit des paquets provenant de n’importe quelle destination distante envoyée au nom du service local ou au port UDP. Avec les méthodes ConnectAsync , l’application reçoit uniquement les paquets de la destination distante passés en tant que paramètres aux méthodes ConnectAsync .
La méthode ConnectAsync fonctionne uniquement pour les adresses IP unicast. Lorsque vous essayez d’appeler la méthode ConnectAsync avec une adresse IP de multidiffusion pour le paramètre remoteHostName , l’opération asynchrone se termine avec une erreur. Lors de la transmission de l’erreur à la méthode SocketError.GetStatus , la valeur retournée est SocketErrorStatus.HostNotFound.
L’utilisation de ConnectAsync avec une adresse IP de diffusion telle que 255.255.255.255 se connecte, mais ne diffuse que via la première carte réseau trouvée. Pour diffuser sur toutes les cartes disponibles, utilisez GetOutputStreamAsync.