Socket.EndReceiveFrom(IAsyncResult, EndPoint) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
Element IAsyncResult , który przechowuje informacje o stanie i wszystkie dane zdefiniowane przez użytkownika dla tej operacji asynchronicznej.
Zwraca
W przypadku powodzenia liczba odebranych bajtów. Jeśli nie powiedzie się, zwraca wartość 0.
Wyjątki
asyncResult
to null
.
asyncResult
nie został zwrócony przez wywołanie BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) metody .
EndReceiveFrom(IAsyncResult, EndPoint) został wcześniej wywołany do odczytu asynchronicznego.
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
-lub-
Tylko platforma .NET 7+ : Socket została zamknięta.
tylko .NET Framework, .NET Core i .NET 5-6: Socket została zamknięta.
Uwagi
Ważne
Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin*
i End*
) do nowego programowania. Zamiast tego należy użyć Task
odpowiedników opartych na protokole .
EndReceiveFrom kończy operację rozpoczętą przez BeginReceiveFrom. Musisz przekazać IAsyncResult utworzony przez odpowiednie BeginReceiveFrom wywołanie.
Metoda EndReceiveFrom będzie blokować, dopóki dane nie będą dostępne. 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 zakończy się 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 EndPoint element i oddaj go do elementu 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla