Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Socket.ConnectAsync méthode (SocketAsyncEventArgs)

 

Date de publication : novembre 2016

Démarre une demande asynchrone pour une connexion à un hôte distant.

Espace de noms:   System.Net.Sockets
Assembly:  System (dans System.dll)

public bool ConnectAsync(
	SocketAsyncEventArgs e
)

Paramètres

e
Type: System.Net.Sockets.SocketAsyncEventArgs

Le System.Net.Sockets.SocketAsyncEventArgs objet à utiliser pour cette opération de socket asynchrone.

Valeur de retour

Type: System.Boolean

Retourne true Si l’opération d’e/s en attente. Le SocketAsyncEventArgs.Completed événement sur le e paramètre sera déclenché à la fin de l’opération.

Retourne false Si l’opération d’e/s effectuée de façon synchrone. Dans ce cas, le SocketAsyncEventArgs.Completed événement sur le e paramètre n’est pas déclenché et le e objet passé comme un paramètre peut être examiné immédiatement après l’appel de méthode pour récupérer le résultat de l’opération.

Exception Condition
ArgumentException

Un argument n’est pas valide. Cette exception se produit si plusieurs mémoires tampons sont spécifiées, le SocketAsyncEventArgs.BufferList propriété n’est pas null.

ArgumentNullException

Le e paramètre ne peut pas être null et le SocketAsyncEventArgs.RemoteEndPoint ne peut pas être null.

InvalidOperationException

Le Socket est à l’écoute ou une opération de socket était déjà en cours à l’aide de le System.Net.Sockets.SocketAsyncEventArgs l’objet spécifié dans le e paramètre.

SocketException

Une erreur s’est produite pendant la tentative d’accès au socket. Pour plus d'informations, consultez la section Notes.

NotSupportedException

Windows XP ou version ultérieure est requis pour cette méthode. Cette exception se produit également si le point de terminaison local et SocketAsyncEventArgs.RemoteEndPoint ne sont pas la même famille d’adresses.

ObjectDisposedException

Socket a été fermé.

SecurityException

Un appelant situé plus haut dans la pile des appels n’a pas l’autorisation pour l’opération demandée.

Si vous utilisez un protocole orienté connexion, la ConnectAsync méthode démarre une demande asynchrone pour une connexion à l’hôte distant. Si vous utilisez un protocole sans connexion, ConnectAsync établit un hôte distant par défaut.

Pour être averti de fin, vous devez créer une méthode de rappel qui implémente le délégué EventHandler < SocketAsyncEventArgs > délégué et connecter le rappel à la SocketAsyncEventArgs.Completed événement.

L’appelant doit définir le SocketAsyncEventArgs.RemoteEndPoint propriété à la IPEndPoint de l’hôte distant pour se connecter à.

L’appelant peut affecter le SocketAsyncEventArgs.UserToken propriété à n’importe quel objet d’état utilisateur désiré avant d’appeler le ConnectAsync (méthode), afin que les informations soient récupérables dans la méthode de rappel. Si le rappel a besoin de plus d’informations qu’un seul objet, une petite classe peut être créée pour contenir les autres informations d’état requises en tant que membres.

Si vous utilisez un protocole sans connexion tel que UDP, vous n’avez pas à appeler ConnectAsync avant d’envoyer et recevoir des données. Vous pouvez utiliser SendToAsync et ReceiveFromAsync pour communiquer avec un hôte distant. Si vous n’appelez pas ConnectAsync, tous les datagrammes provenant d’une adresse autre que celle par défaut spécifiée seront ignorés. Si vous voulez changer l’hôte distant par défaut, appelez la ConnectAsync méthode avec le point de terminaison souhaité.

Si vous souhaitez définir l’hôte distant par défaut à une adresse de diffusion, vous devez d’abord appeler SetSocketOption et diffusion true. Si cela n’est pas fait, le ConnectAsync méthode lève un SocketException.

Les propriétés et événements suivants sur le System.Net.Sockets.SocketAsyncEventArgs objet sont requises :

Une mémoire tampon peut éventuellement être fournie qui sera envoyé atomiquement sur le socket après le ConnectAsync méthode réussit. Dans ce cas, le SocketAsyncEventArgs.Buffer propriété doit être définie dans la mémoire tampon contenant les données à envoyer et le SocketAsyncEventArgs.Count propriété doit être définie pour le nombre d’octets de données à envoyer à partir de la mémoire tampon. Une fois qu’une connexion est établie, cette mémoire tampon de données est envoyé.

Si vous utilisez un protocole orienté connexion et que vous n’appelez pas Bind avant d’appeler ConnectAsync, fournisseur de services sous-jacent assignera le numéro d’adresse et le port réseau local adapté.

Si vous utilisez un protocole sans connexion, le fournisseur de services assignera pas un réseau local IP adresse et numéro de port jusqu'à ce que vous appeliez la SendAsync ou ReceiveAsync méthodes.

Le ConnectAsync méthode lève une exception NotSupportedException Si la famille d’adresses de la Socket et SocketAsyncEventArgs.RemoteEndPoint ne sont pas la même famille d’adresses.

System_CAPS_noteRemarque

Si vous recevez un SocketException lorsque vous appelez cette méthode, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois que vous avez obtenu ce code, reportez-vous à la version de Windows Sockets 2 documentation de code d’erreur API dans la bibliothèque MSDN pour obtenir une description détaillée de l’erreur.

Plateforme Windows universelle
Disponible depuis 10
.NET Framework
Disponible depuis 2.0
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.1
Retour au début
Afficher: