Freigeben über


Socket.AcceptAsync Methode

Definition

Überlädt

Name Beschreibung
AcceptAsync()

Akzeptiert eine eingehende Verbindung.

AcceptAsync(Socket)

Akzeptiert eine eingehende Verbindung.

AcceptAsync(SocketAsyncEventArgs)

Startet einen asynchronen Vorgang, um einen eingehenden Verbindungsversuch zu akzeptieren.

AcceptAsync(CancellationToken)

Akzeptiert eine eingehende Verbindung.

AcceptAsync(Socket, CancellationToken)

Akzeptiert eine eingehende Verbindung.

AcceptAsync()

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Akzeptiert eine eingehende Verbindung.

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)

Gibt zurück

Eine asynchrone Aufgabe, die mit dem akzeptierten Socket abgeschlossen wird.

Ausnahmen

Ein ungültiger Vorgang wurde angefordert. Diese Ausnahme tritt auf, wenn die Annahme Socket nicht auf Verbindungen lauscht oder der akzeptierte Socket gebunden ist.

Sie müssen die Methode und Listen(Int32) die Bind(EndPoint) Methode aufrufen, bevor Sie die AcceptAsync(SocketAsyncEventArgs) Methode aufrufen.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Hinweise

Diese Methode speichert in der Aufgabe, die alle Nicht-Verwendungs-Ausnahmen zurückgibt, die das synchrone Gegenstück der Methode auslösen kann. Wenn eine Ausnahme in der zurückgegebenen Aufgabe gespeichert wird, wird diese Ausnahme ausgelöst, wenn die Aufgabe erwartet wird. Verwendungsausnahmen, z. B. ArgumentException, werden weiterhin synchron ausgelöst. Informationen zu den gespeicherten Ausnahmen finden Sie in den von Accept().

Gilt für:

AcceptAsync(Socket)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Akzeptiert eine eingehende Verbindung.

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)

Parameter

acceptSocket
Socket

Der Socket, der für die Annahme der Verbindung verwendet werden soll.

Gibt zurück

Eine asynchrone Aufgabe, die mit dem akzeptierten Socket abgeschlossen wird.

Ausnahmen

Ein ungültiger Vorgang wurde angefordert. Diese Ausnahme tritt auf, wenn die Annahme Socket nicht auf Verbindungen lauscht oder der akzeptierte Socket gebunden ist.

Sie müssen die Methode und Listen(Int32) die Bind(EndPoint) Methode aufrufen, bevor Sie die AcceptAsync(SocketAsyncEventArgs) Methode aufrufen.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Gilt für:

AcceptAsync(SocketAsyncEventArgs)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Startet einen asynchronen Vorgang, um einen eingehenden Verbindungsversuch zu akzeptieren.

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

Parameter

e
SocketAsyncEventArgs

Das SocketAsyncEventArgs Objekt, das für diesen asynchronen Socketvorgang verwendet werden soll.

Gibt zurück

true wenn der E/A-Vorgang aussteht. Das Completed Ereignis für den e Parameter wird nach Abschluss des Vorgangs ausgelöst.

false wenn der E/A-Vorgang synchron abgeschlossen wurde. Das Completed Ereignis für den e Parameter wird nicht ausgelöst, und das e als Parameter übergebene Objekt kann unmittelbar nach dem Aufruf der Methode untersucht werden, um das Ergebnis des Vorgangs abzurufen.

Ausnahmen

Ein Argument ist ungültig. Diese Ausnahme tritt auf, wenn der bereitgestellte Puffer nicht groß genug ist. Der Puffer muss mindestens 2 * (Sizeof(SOCKADDR_STORAGE + 16))-Bytes sein.

Diese Ausnahme tritt auch auf, wenn mehrere Puffer angegeben werden, die BufferList Eigenschaft ist nicht NULL.

Ein Argument liegt außerhalb des Zulässigen. Die Ausnahme tritt auf, wenn dies Count kleiner als 0 ist.

Ein ungültiger Vorgang wurde angefordert. Diese Ausnahme tritt auf, wenn die Annahme Socket nicht auf Verbindungen lauscht oder der akzeptierte Socket gebunden ist.

Sie müssen die Methode und Listen(Int32) die Bind(EndPoint) Methode aufrufen, bevor Sie die AcceptAsync(SocketAsyncEventArgs) Methode aufrufen.

Diese Ausnahme tritt auch auf, wenn der Socket bereits verbunden ist oder ein Socketvorgang bereits mit dem angegebenen e Parameter ausgeführt wurde.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Hinweise

Verbindungsorientierte Protokolle können die AcceptAsync Methode verwenden, um eingehende Verbindungsversuche asynchron zu verarbeiten. Durch das asynchrone Akzeptieren von Verbindungen können Sie Daten in einem separaten Ausführungsthread senden und empfangen. Bevor Sie die AcceptAsync Methode aufrufen, müssen Sie die Listen Methode aufrufen, um eingehende Verbindungsanforderungen zu überwachen und in die Warteschlange zu stellen.

Um über den Abschluss benachrichtigt zu werden, müssen Sie eine Rückrufmethode erstellen, die den EventHandler<SocketAsyncEventArgs-Delegaten> implementiert und mit dem SocketAsyncEventArgs.Completed Ereignis in Verbindung setzt.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs Objekt sind erforderlich:

Der Aufrufer kann optional eine vorhandene Socket Für die eingehende Verbindung angeben, indem die Socket für die SocketAsyncEventArgs.AcceptSocket Eigenschaft zu verwendende Eigenschaft angegeben wird.

Wenn die SocketAsyncEventArgs.AcceptSocket Eigenschaft NULL ist, wird ein neues Socket mit demselben AddressFamily, SocketTypeund ProtocolType dem aktuellen Socket und als Eigenschaft festgelegt.SocketAsyncEventArgs.AcceptSocket

Der Aufrufer kann die SocketAsyncEventArgs.UserToken Eigenschaft auf ein beliebiges Benutzerstatusobjekt festlegen, das vor dem Aufrufen der AcceptAsync Methode gewünscht wird, sodass die Informationen in der Rückrufmethode abgerufen werden können. Wenn der Rückruf mehr Informationen als ein einzelnes Objekt benötigt, kann eine kleine Klasse erstellt werden, um die anderen erforderlichen Statusinformationen als Member zu speichern.

Optional kann ein Puffer bereitgestellt werden, in dem der anfängliche Datenblock des Sockets empfangen wird, nachdem die ConnectAsync Methode erfolgreich war. In diesem Fall muss die SocketAsyncEventArgs.Buffer Eigenschaft auf den Puffer festgelegt werden, der die zu empfangenden Daten enthält, und die SocketAsyncEventArgs.Count Eigenschaft muss auf die maximale Anzahl von Bytes festgelegt werden, die im Puffer empfangen werden sollen. Diese Eigenschaften können mithilfe der SocketAsyncEventArgs.SetBuffer Methode festgelegt werden. Ein Teil des übergebenen Puffers wird intern für die Verwendung durch den zugrunde liegenden Winsock AcceptEx-Aufruf verwendet. Dies bedeutet, dass die zurückgegebene Datenmenge immer kleiner als der Wert der Eigenschaft in der SocketAsyncEventArgs.CountSystem.Net.Sockets.SocketAsyncEventArgs bereitgestellten Instanz ist. Die intern verwendete Puffermenge variiert je nach Adressfamilie des Sockets. Die erforderliche Mindestpuffergröße beträgt 288 Byte. Wenn eine größere Puffergröße angegeben ist, erwarten sie Socket einige zusätzliche Daten, die nicht die Adressdaten sind, die vom Winsock AcceptEx-Aufruf empfangen werden, und warten, bis diese zusätzlichen Daten empfangen werden. Wenn ein Timeout auftritt, wird die Verbindung zurückgesetzt. Wenn also zusätzliche Daten von einer bestimmten Menge erwartet werden, sollte die Puffergröße auf die minimale Puffergröße plus dieser Menge festgelegt werden.

Die Abschlussrückrufmethode sollte die SocketAsyncEventArgs.SocketError Eigenschaft untersuchen, um festzustellen, ob der AcceptAsync Vorgang erfolgreich war.

Das SocketAsyncEventArgs.Completed Ereignis kann in einigen Fällen auftreten, wenn keine Verbindung akzeptiert wurde und die SocketAsyncEventArgs.SocketError Eigenschaft auf ConnectionReset"festgelegt" festgelegt wird. Dies kann als Ergebnis der Portüberprüfung mit einem halb geöffneten SYN-Typscan (syn -> SYN-ACK -> RST-Sequenz) auftreten. Anwendungen, die die AcceptAsync Methode verwenden, sollten darauf vorbereitet sein, diese Bedingung zu behandeln.

Weitere Informationen

Gilt für:

AcceptAsync(CancellationToken)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Akzeptiert eine eingehende Verbindung.

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)

Parameter

cancellationToken
CancellationToken

Ein Abbruchtoken, das zum Abbrechen des asynchronen Vorgangs verwendet werden kann.

Gibt zurück

Eine asynchrone Aufgabe, die mit dem akzeptierten Socket abgeschlossen wird.

Ausnahmen

Ein ungültiger Vorgang wurde angefordert. Diese Ausnahme tritt auf, wenn die Annahme Socket nicht auf Verbindungen lauscht oder der akzeptierte Socket gebunden ist.

Sie müssen die Methode und Listen(Int32) die Bind(EndPoint) Methode aufrufen, bevor Sie die AcceptAsync(SocketAsyncEventArgs) Methode aufrufen.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Das Abbruchtoken wurde abgebrochen. Diese Ausnahme wird in der zurückgegebenen Aufgabe gespeichert.

Hinweise

Diese Methode speichert in der Aufgabe, die alle Nicht-Verwendungs-Ausnahmen zurückgibt, die das synchrone Gegenstück der Methode auslösen kann. Wenn eine Ausnahme in der zurückgegebenen Aufgabe gespeichert wird, wird diese Ausnahme ausgelöst, wenn die Aufgabe erwartet wird. Verwendungsausnahmen, z. B. ArgumentException, werden weiterhin synchron ausgelöst. Informationen zu den gespeicherten Ausnahmen finden Sie in den von Accept().

Gilt für:

AcceptAsync(Socket, CancellationToken)

Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs
Quelle:
Socket.Tasks.cs

Akzeptiert eine eingehende Verbindung.

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)

Parameter

acceptSocket
Socket

Der Socket, der für die Annahme der Verbindung verwendet werden soll.

cancellationToken
CancellationToken

Ein Abbruchtoken, das zum Abbrechen des asynchronen Vorgangs verwendet werden kann.

Gibt zurück

Eine asynchrone Aufgabe, die mit dem akzeptierten Socket abgeschlossen wird.

Ausnahmen

Ein ungültiger Vorgang wurde angefordert. Diese Ausnahme tritt auf, wenn die Annahme Socket nicht auf Verbindungen lauscht oder der akzeptierte Socket gebunden ist.

Sie müssen die Methode und Listen(Int32) die Bind(EndPoint) Methode aufrufen, bevor Sie die AcceptAsync(SocketAsyncEventArgs) Methode aufrufen.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Das Abbruchtoken wurde abgebrochen. Diese Ausnahme wird in der zurückgegebenen Aufgabe gespeichert.

Gilt für: