Udostępnij za pośrednictwem


Socket.EndReceiveFrom(IAsyncResult, EndPoint) Metoda

Definicja

Kończy oczekujący asynchroniczny odczyt z określonego punktu końcowego.

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

Parametry

asyncResult
IAsyncResult

Obiekt IAsyncResult , który przechowuje informacje o stanie i wszystkie dane zdefiniowane przez użytkownika dla tej operacji asynchronicznej.

endPoint
EndPoint

Źródło EndPoint.

Zwraca

W przypadku powodzenia liczba odebranych bajtów. Jeśli nie powiedzie się, zwraca wartość 0.

Wyjątki

asyncResult to null.

asyncResult element nie został zwrócony przez wywołanie BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) metody .

EndReceiveFrom(IAsyncResult, EndPoint) wcześniej był wywoływany dla odczytu asynchronicznego.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

-lub-

Tylko platforma .NET 7+ : element Socket został zamknięty.

tylko .NET Framework, .NET Core i .NET 5-6: element Socket został zamknięty.

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do tworzenia nowych rozwiązań. Zamiast tego należy użyć odpowiedników opartych na Taskparametrach .

EndReceiveFrom kończy operację rozpoczętą przez BeginReceiveFrom. Należy przekazać IAsyncResult utworzony przez pasujące BeginReceiveFrom wywołanie.

Metoda EndReceiveFrom będzie blokować dane do momentu udostępnienia danych. Jeśli używasz protokołu bez połączenia, EndReceiveFrom odczytuje pierwszy w kolejce datagram dostępny w buforze sieci przychodzącej. Jeśli używasz protokołu zorientowanego na połączenie, EndReceiveFrom metoda odczytuje tyle danych, ile jest dostępnych do liczby bajtów określonych w size parametrze BeginReceiveFrom metody . Jeśli host zdalny zamknie Socket połączenie z Shutdown metodą , a wszystkie dostępne dane zostały odebrane, EndReceiveFrom metoda zostanie ukończona natychmiast i zwróci zero bajtów. Aby uzyskać odebrane dane, wywołaj AsyncState metodę IAsyncResult obiektu i wyodrębnij bufor zawarty w obiekcie stanu wynikowego. Aby zidentyfikować hosta źródłowego, wyodrębnij i rzutuj EndPoint go na obiekt IPEndPoint. IPEndPoint.Address Użyj metody , aby uzyskać adres IP i IPEndPoint.Port metodę w celu uzyskania numeru portu.

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Dotyczy