Partage via


Socket.AcceptAsync Méthode

Définition

Surcharges

AcceptAsync()

Accepte une connexion entrante.

AcceptAsync(Socket)

Accepte une connexion entrante.

AcceptAsync(SocketAsyncEventArgs)

Démarre une opération asynchrone pour accepter une tentative de connexion entrante.

AcceptAsync(CancellationToken)

Accepte une connexion entrante.

AcceptAsync(Socket, CancellationToken)

Accepte une connexion entrante.

AcceptAsync()

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Accepte une connexion entrante.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::Socket ^> ^ AcceptAsync();
public System.Threading.Tasks.Task<System.Net.Sockets.Socket> AcceptAsync ();
member this.AcceptAsync : unit -> System.Threading.Tasks.Task<System.Net.Sockets.Socket>
Public Function AcceptAsync () As Task(Of Socket)

Retours

Tâche asynchrone qui se termine avec le socket accepté.

Exceptions

Une opération incorrecte a été demandée. Cette exception se produit si le Socket acceptant n'écoute pas les connexions ou si le socket accepté est lié.

Vous devez appeler les méthodes Bind(EndPoint) et Listen(Int32) avant d'appeler la méthode AcceptAsync(SocketAsyncEventArgs).

Cette exception se produit également si le socket est déjà connecté ou si une opération de socket utilisait déjà le paramètre de e spécifié.

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

Remarques

Cette méthode stocke dans la tâche toutes les exceptions de non-utilisation que le équivalent synchrone de la méthode peut lever. Si une exception est stockée dans la tâche retournée, cette exception est levée lorsque la tâche est attendue. Les exceptions d’utilisation, telles que ArgumentException, sont toujours levées de manière synchrone. Pour les exceptions stockées, consultez les exceptions levées par Accept().

S’applique à

AcceptAsync(Socket)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Accepte une connexion entrante.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::Socket ^> ^ AcceptAsync(System::Net::Sockets::Socket ^ acceptSocket);
public System.Threading.Tasks.Task<System.Net.Sockets.Socket> AcceptAsync (System.Net.Sockets.Socket? acceptSocket);
member this.AcceptAsync : System.Net.Sockets.Socket -> System.Threading.Tasks.Task<System.Net.Sockets.Socket>
Public Function AcceptAsync (acceptSocket As Socket) As Task(Of Socket)

Paramètres

acceptSocket
Socket

Socket à utiliser pour accepter la connexion.

Retours

Tâche asynchrone qui se termine avec le socket accepté.

Exceptions

Une opération incorrecte a été demandée. Cette exception se produit si le Socket acceptant n'écoute pas les connexions ou si le socket accepté est lié.

Vous devez appeler les méthodes Bind(EndPoint) et Listen(Int32) avant d'appeler la méthode AcceptAsync(SocketAsyncEventArgs).

Cette exception se produit également si le socket est déjà connecté ou si une opération de socket utilisait déjà le paramètre de e spécifié.

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

S’applique à

AcceptAsync(SocketAsyncEventArgs)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Démarre une opération asynchrone pour accepter une tentative de connexion entrante.

public:
 bool AcceptAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool AcceptAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.AcceptAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function AcceptAsync (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 paramètre e sera déclenché une fois l'opération terminée.

false si l’opération d’E/S a été terminée de manière synchrone. L'événement Completed sur le paramètre e ne sera pas déclenché et l'objet e transmis en tant que paramètre peut être examiné immédiatement après que l'appel de méthode a été retourné pour extraire le résultat de l'opération.

Exceptions

Un argument n’est pas valide. Cette exception se produit si la mémoire tampon fournie n'est pas assez grande. La mémoire tampon doit être d'au moins 2 * (taille de (SOCKADDR_STORAGE + 16) octets.

Cette exception se produit également si plusieurs mémoires tampons sont spécifiées, la propriété BufferList n'est pas null.

Un argument est hors limites. L'exception se produit si Count est inférieur à 0.

Une opération incorrecte a été demandée. Cette exception se produit si le Socket acceptant n'écoute pas les connexions ou si le socket accepté est lié.

Vous devez appeler les méthodes Bind(EndPoint) et Listen(Int32) avant d'appeler la méthode AcceptAsync(SocketAsyncEventArgs).

Cette exception se produit également si le socket est déjà connecté ou si une opération de socket utilisait déjà le paramètre de e spécifié.

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

Remarques

Les protocoles orientés connexion peuvent utiliser la AcceptAsync méthode pour traiter de manière asynchrone les tentatives de connexion entrantes. L’acceptation de connexions de façon asynchrone vous donne la possibilité d’envoyer et de recevoir des données dans un thread d’exécution distinct. Avant d’appeler la AcceptAsync méthode, vous devez appeler la Listen méthode pour écouter et mettre en file d’attente les demandes de connexion entrantes.

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

Les propriétés et événements suivants sur l’objet System.Net.Sockets.SocketAsyncEventArgs sont requis :

L’appelant peut éventuellement spécifier un existant Socket à utiliser pour la connexion entrante en spécifiant le Socket à utiliser avec la SocketAsyncEventArgs.AcceptSocket propriété .

Si la propriété a la SocketAsyncEventArgs.AcceptSocket valeur null, une nouvelle Socket est construite avec les mêmes AddressFamily, SocketTypeet ProtocolType que le actuel Socket et défini comme propriété SocketAsyncEventArgs.AcceptSocket .

L’appelant peut définir la SocketAsyncEventArgs.UserToken propriété sur n’importe quel objet d’état utilisateur souhaité avant d’appeler la AcceptAsync 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 le souhaitez, une mémoire tampon peut être fournie dans laquelle recevoir le bloc initial de données sur le socket une fois la ConnectAsync méthode réussie. Dans ce cas, la SocketAsyncEventArgs.Buffer propriété doit être définie sur la mémoire tampon contenant les données à recevoir et la SocketAsyncEventArgs.Count propriété doit être définie sur le nombre maximal d’octets de données à recevoir dans la mémoire tampon. Ces propriétés peuvent être définies à l’aide de la SocketAsyncEventArgs.SetBuffer méthode . Une partie de la mémoire tampon passée sera consommée en interne pour être utilisée par l’appel Winsock AcceptEx sous-jacent. Cela signifie que la quantité de données retournées sera toujours inférieure à la valeur de la SocketAsyncEventArgs.Count propriété sur le System.Net.Sockets.SocketAsyncEventArgs instance fourni. La quantité de mémoire tampon utilisée en interne varie en fonction de la famille d’adresses du socket. La taille de mémoire tampon minimale requise est de 288 octets. Si une taille de mémoire tampon plus élevée est spécifiée, le Socket attend des données supplémentaires autres que les données d’adresse reçues par l’appel Winsock AcceptEx et attend que ces données supplémentaires sont reçues. Si un délai d’expiration se produit, la connexion est réinitialisée. Par conséquent, si des données supplémentaires sont attendues d’une quantité spécifique, la taille de la mémoire tampon doit être définie sur la taille de mémoire tampon minimale plus cette quantité.

La méthode de rappel d’achèvement doit examiner la SocketAsyncEventArgs.SocketError propriété pour déterminer si l’opération AcceptAsync a réussi.

L’événement SocketAsyncEventArgs.Completed peut se produire dans certains cas quand aucune connexion n’a été acceptée et que la SocketAsyncEventArgs.SocketError propriété est définie sur ConnectionReset. Cela peut se produire à la suite d’une analyse de port à l’aide d’une analyse de type SYN semi-ouverte (séquence SYN -> SYN-ACK -> RST). Les applications utilisant la AcceptAsync méthode doivent être préparées pour gérer cette condition.

Voir aussi

S’applique à

AcceptAsync(CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Accepte une connexion entrante.

public:
 System::Threading::Tasks::ValueTask<System::Net::Sockets::Socket ^> AcceptAsync(System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket> AcceptAsync (System.Threading.CancellationToken cancellationToken);
member this.AcceptAsync : System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket>
Public Function AcceptAsync (cancellationToken As CancellationToken) As ValueTask(Of Socket)

Paramètres

cancellationToken
CancellationToken

Jeton d’annulation qui peut être utilisé pour annuler l’opération asynchrone.

Retours

Tâche asynchrone qui se termine avec le socket accepté.

Exceptions

Une opération incorrecte a été demandée. Cette exception se produit si le Socket acceptant n'écoute pas les connexions ou si le socket accepté est lié.

Vous devez appeler les méthodes Bind(EndPoint) et Listen(Int32) avant d'appeler la méthode AcceptAsync(SocketAsyncEventArgs).

Cette exception se produit également si le socket est déjà connecté ou si une opération de socket utilisait déjà le paramètre de e spécifié.

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

Le jeton d’annulation a été annulé. Cette exception est stockée dans la tâche retournée.

Remarques

Cette méthode stocke dans la tâche toutes les exceptions de non-utilisation que le équivalent synchrone de la méthode peut lever. Si une exception est stockée dans la tâche retournée, cette exception est levée lorsque la tâche est attendue. Les exceptions d’utilisation, telles que ArgumentException, sont toujours levées de manière synchrone. Pour les exceptions stockées, consultez les exceptions levées par Accept().

S’applique à

AcceptAsync(Socket, CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Accepte une connexion entrante.

public:
 System::Threading::Tasks::ValueTask<System::Net::Sockets::Socket ^> AcceptAsync(System::Net::Sockets::Socket ^ acceptSocket, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket> AcceptAsync (System.Net.Sockets.Socket? acceptSocket, System.Threading.CancellationToken cancellationToken);
member this.AcceptAsync : System.Net.Sockets.Socket * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket>
Public Function AcceptAsync (acceptSocket As Socket, cancellationToken As CancellationToken) As ValueTask(Of Socket)

Paramètres

acceptSocket
Socket

Socket à utiliser pour accepter la connexion.

cancellationToken
CancellationToken

Jeton d’annulation qui peut être utilisé pour annuler l’opération asynchrone.

Retours

Tâche asynchrone qui se termine avec le socket accepté.

Exceptions

Une opération incorrecte a été demandée. Cette exception se produit si le Socket acceptant n'écoute pas les connexions ou si le socket accepté est lié.

Vous devez appeler les méthodes Bind(EndPoint) et Listen(Int32) avant d'appeler la méthode AcceptAsync(SocketAsyncEventArgs).

Cette exception se produit également si le socket est déjà connecté ou si une opération de socket utilisait déjà le paramètre de e spécifié.

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

Le jeton d’annulation a été annulé. Cette exception est stockée dans la tâche retournée.

S’applique à