Freigeben über


Socket.EndReceiveFrom(IAsyncResult, EndPoint) Methode

Definition

Beendet einen ausstehenden asynchronen Lesevorgang von einem bestimmten Endpunkt.

public:
 int EndReceiveFrom(IAsyncResult ^ asyncResult, System::Net::EndPoint ^ % endPoint);
public int EndReceiveFrom (IAsyncResult asyncResult, ref System.Net.EndPoint endPoint);
member this.EndReceiveFrom : IAsyncResult * EndPoint -> int
Public Function EndReceiveFrom (asyncResult As IAsyncResult, ByRef endPoint As EndPoint) As Integer

Parameter

asyncResult
IAsyncResult

Ein IAsyncResult, das Zustandsinformationen über diesen asynchronen Vorgang sowie ggf. vorhandene benutzerdefinierte Daten speichert.

endPoint
EndPoint

Der Quell-EndPoint.

Gibt zurück

Wenn erfolgreich, die Anzahl der empfangenen Bytes. Wenn die Ausführung nicht erfolgreich ist, wird 0 zurückgegeben.

Ausnahmen

asyncResult ist null.

asyncResult wurde nicht durch einen Aufruf der BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)-Methode zurückgegeben.

EndReceiveFrom(IAsyncResult, EndPoint) wurde bereits für den asynchronen Lesevorgang aufgerufen.

Fehler beim Versuch, auf den Socket zuzugreifen.

- oder -

Nur .NET 7 und höher: Die Socket wurde geschlossen.

nur .NET Framework, .NET Core und .NET 5-6: Die Socket wurde geschlossen.

Hinweise

Wichtig

Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin* und End*) für die Neuentwicklung zu verwenden. Verwenden Sie stattdessen die Task-basierten Entsprechungen.

EndReceiveFrom schließt den von gestarteten Vorgang ab BeginReceiveFrom. Sie müssen das übergeben, das IAsyncResult vom übereinstimmenden BeginReceiveFrom Aufruf erstellt wurde.

Die EndReceiveFrom -Methode wird blockiert, bis Daten verfügbar sind. Wenn Sie ein verbindungsloses Protokoll verwenden, EndReceiveFrom liest das erste in die Warteschlange eingereihte Datagramm, das im eingehenden Netzwerkpuffer verfügbar ist. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, liest die EndReceiveFrom Methode bis zu der Anzahl von Bytes, die Sie im size Parameter der BeginReceiveFrom -Methode angegeben haben, so viele Daten, wie verfügbar sind. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die EndReceiveFrom Methode sofort abgeschlossen und gibt null Bytes zurück. Um die empfangenen Daten abzurufen, rufen Sie die AsyncState -Methode des IAsyncResult -Objekts auf, und extrahieren Sie den Puffer, der im resultierenden Zustandsobjekt enthalten ist. Um den ursprünglichen Host zu identifizieren, extrahieren Sie den EndPoint , und wandeln Sie ihn in ein um IPEndPoint. Verwenden Sie die IPEndPoint.Address -Methode, um die IP-Adresse und die IPEndPoint.Port -Methode zum Abrufen der Portnummer abzurufen.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Gilt für: