Socket.EndReceive 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 odczyt asynchroniczny.
Przeciążenia
EndReceive(IAsyncResult) |
Kończy oczekujący odczyt asynchroniczny. |
EndReceive(IAsyncResult, SocketError) |
Kończy oczekujący odczyt asynchroniczny. |
EndReceive(IAsyncResult)
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
Kończy oczekujący odczyt asynchroniczny.
public:
int EndReceive(IAsyncResult ^ asyncResult);
public int EndReceive (IAsyncResult asyncResult);
member this.EndReceive : IAsyncResult -> int
Public Function EndReceive (asyncResult As IAsyncResult) 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
Liczba bajtów odebranych.
Wyjątki
asyncResult
to null
.
asyncResult
nie został zwrócony przez wywołanie BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) metody .
EndReceive(IAsyncResult) 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 .
EndReceive kończy operację rozpoczętą przez BeginReceive. Musisz przekazać IAsyncResult utworzony przez odpowiednie BeginReceive wywołanie.
Metoda EndReceive będzie blokować, dopóki dane nie będą dostępne. Jeśli używasz protokołu bez połączenia, EndReceive odczytuje pierwszy w kolejce datagram dostępny w buforze sieci przychodzącej. Jeśli używasz protokołu zorientowanego na połączenie, EndReceive metoda odczytuje tyle danych, ile jest dostępnych do liczby bajtów określonych w size
parametrze BeginReceive metody . Jeśli host zdalny zamknie Socket połączenie z Shutdown metodą , a wszystkie dostępne dane zostały odebrane, EndReceive metoda zakończy się natychmiast i zwróci zero bajtów.
Uwaga
Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.
Uwaga
Wszystkie operacje we/wy inicjowane przez dany wątek są anulowane po zakończeniu tego wątku. Oczekująca operacja asynchroniczna może zakończyć się niepowodzeniem, jeśli wątek zakończy się przed zakończeniem operacji.
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.
Zobacz też
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)
Dotyczy
EndReceive(IAsyncResult, SocketError)
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
Kończy oczekujący odczyt asynchroniczny.
public:
int EndReceive(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndReceive (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndReceive : IAsyncResult * SocketError -> int
Public Function EndReceive (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer
Parametry
- asyncResult
- IAsyncResult
Element IAsyncResult , który przechowuje informacje o stanie i wszystkie dane zdefiniowane przez użytkownika dla tej operacji asynchronicznej.
- errorCode
- SocketError
SocketError Obiekt, który przechowuje błąd gniazda.
Zwraca
Liczba bajtów odebranych.
Wyjątki
asyncResult
to null
.
asyncResult
nie został zwrócony przez wywołanie BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) metody .
EndReceive(IAsyncResult) 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 .
EndReceive kończy operację rozpoczętą przez BeginReceive. Musisz przekazać IAsyncResult utworzony przez odpowiednie BeginReceive wywołanie.
Metoda EndReceive będzie blokować, dopóki dane nie będą dostępne. Jeśli używasz protokołu bez połączenia, EndReceive odczytuje pierwszy w kolejce datagram dostępny w buforze sieci przychodzącej. Jeśli używasz protokołu zorientowanego na połączenie, EndReceive metoda odczytuje tyle danych, ile jest dostępnych do liczby bajtów określonych w size
parametrze BeginReceive metody . Jeśli host zdalny zamknie Socket połączenie z Shutdown metodą , a wszystkie dostępne dane zostały odebrane, EndReceive metoda zakończy się natychmiast i zwróci zero bajtów.
Uwaga
Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.
Uwaga
Wszystkie operacje we/wy inicjowane przez dany wątek są anulowane po zakończeniu tego wątku. Oczekująca operacja asynchroniczna może zakończyć się niepowodzeniem, jeśli wątek zakończy się przed zakończeniem operacji.
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.
Zobacz też
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)