Socket.ReceiveAsync(SocketAsyncEventArgs) Méthode

Définition

Commence une requête asynchrone pour recevoir des données d’un objet connecté Socket .

public:
 bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean

Paramètres

e
SocketAsyncEventArgs

Objet SocketAsyncEventArgs à utiliser pour cette opération de socket asynchrone.

Retours

true si l’opération d’E/S est en attente. L’événement Completed sur le e paramètre est déclenché à l’achèvement de l’opération.

false si l’opération d’E/S s’est terminée de façon synchrone. Dans ce cas, l’événement Completed sur le e paramètre ne sera pas déclenché et l’objet e transmis en tant que 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.

Exceptions

Un argument n’était pas valide. Le Buffer ou BufferList les propriétés du e paramètre doivent référencer des mémoires tampons valides. L’une ou l’autre de ces propriétés peut être définie, mais pas les deux en même temps.

Une opération de socket était déjà en cours à l’aide de l’objet SocketAsyncEventArgs spécifié dans le e paramètre.

Il Socket a été fermé.

Une erreur s’est produite lors de la tentative d’accès au socket.

Remarques

La ReceiveAsync méthode est utilisée sur des sockets connectés ou des sockets sans connexion liés et est utilisée pour lire les données entrantes. L’adresse locale du socket doit être connue.

Pour les sockets sans connexion liés, cette fonction restreint les adresses à partir desquelles les messages reçus sont acceptés. La fonction retourne uniquement les messages de l’adresse distante spécifiée dans la connexion. Les messages provenant d’autres adresses sont ignorés en mode silencieux.

La SocketAsyncEventArgs.SocketFlags propriété sur le e paramètre fournit au fournisseur de services Window Sockets des informations supplémentaires sur la demande de lecture. Pour plus d’informations sur l’utilisation de ce paramètre, consultez System.Net.Sockets.SocketFlags.

Les propriétés et événements suivants sur l’objet System.Net.Sockets.SocketAsyncEventArgs sont nécessaires pour appeler correctement cette méthode :

L’appelant peut définir la SocketAsyncEventArgs.UserToken propriété sur n’importe quel objet d’état utilisateur souhaité avant d’appeler la ReceiveAsync 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.

Pour les sockets de style flux d’octets, les données entrantes sont placées dans la mémoire tampon jusqu’à ce que la mémoire tampon soit remplie, que la connexion soit fermée ou que les données mises en mémoire tampon interne sont épuisées.

Pour les sockets orientés messages, un message entrant est placé dans la mémoire tampon jusqu’à la taille totale de la mémoire tampon associée au e paramètre. Si le message est supérieur à la mémoire tampon, la mémoire tampon est remplie avec la première partie du message.

Pour les sockets orientés connexion, la ReceiveAsync méthode peut indiquer l’arrêt normal du circuit virtuel de l’une des deux manières qui dépendent du flux d’octets ou du message. Pour les flux d’octets, zéro octets ayant été lus indique une fermeture normale et qu’aucun nombre d’octets ne sera jamais lu. Pour les sockets orientés messages, où un message d’octet zéro est souvent autorisé, un SocketException avec l’ensemble du SocketAsyncEventArgs.SocketError code d’erreur Winsock WSAEDISCON natif (10101) est utilisé pour indiquer la fermeture appropriée. Dans tous les cas, un SocketException avec la SocketAsyncEventArgs.SocketError valeur définie sur le code d’erreur Winsock WSAECONNRESET natif (10054) indique qu’une fermeture abortive s’est produite.

S’applique à

Voir aussi