Socket.EndSend 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ące wysyłanie asynchroniczne.
Przeciążenia
EndSend(IAsyncResult) |
Kończy oczekujące wysyłanie asynchroniczne. |
EndSend(IAsyncResult, SocketError) |
Kończy oczekujące wysyłanie asynchroniczne. |
EndSend(IAsyncResult)
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
Kończy oczekujące wysyłanie asynchroniczne.
public:
int EndSend(IAsyncResult ^ asyncResult);
public int EndSend (IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer
Parametry
- asyncResult
- IAsyncResult
Element IAsyncResult przechowujący informacje o stanie dla tej operacji asynchronicznej.
Zwraca
W przypadku powodzenia liczba bajtów wysłanych do Socketobiektu ; w przeciwnym razie jest to nieprawidłowy Socket błąd.
Wyjątki
asyncResult
to null
.
asyncResult
element nie został zwrócony przez wywołanie BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) metody .
EndSend(IAsyncResult) wcześniej było wywoływane dla wysyłania 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 Task
parametrach .
EndSend kończy operację rozpoczętą przez BeginSend. Należy przekazać IAsyncResult utworzony przez pasujące BeginSend wywołanie.
Jeśli używasz protokołu bez połączenia, EndSend będzie blokowany do momentu wysłania datagramu. Jeśli używasz protokołu zorientowanego na połączenie, EndSend zostanie zablokowany do momentu wysłania niektórych buforów. Jeśli wartość zwracana z EndSend parametru wskazuje, że bufor nie został całkowicie wysłany, wywołaj BeginSend metodę ponownie, modyfikując bufor tak, aby przechowywał niewymagające dane.
Nie ma gwarancji, że wysyłane dane zostaną natychmiast wyświetlone w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości wychodzących danych. Pomyślne ukończenie BeginSend metody oznacza, że podstawowy system miał miejsce do buforowania danych dla wysyłania sieciowego.
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
Pomyślne ukończenie wysyłania nie wskazuje, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania przesyłanych danych, wyślij blok, chyba że gniazdo zostało umieszczone w trybie bezblokowania.
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ż
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
Dotyczy
EndSend(IAsyncResult, SocketError)
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
Kończy oczekujące wysyłanie asynchroniczne.
public:
int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer
Parametry
- asyncResult
- IAsyncResult
Element IAsyncResult przechowujący informacje o stanie dla tej operacji asynchronicznej.
- errorCode
- SocketError
SocketError Obiekt, który przechowuje błąd gniazda.
Zwraca
W przypadku powodzenia liczba bajtów wysłanych do Socketobiektu ; w przeciwnym razie jest to nieprawidłowy Socket błąd.
Wyjątki
asyncResult
to null
.
asyncResult
element nie został zwrócony przez wywołanie BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) metody .
EndSend(IAsyncResult) wcześniej było wywoływane dla wysyłania 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 Task
parametrach .
EndSend kończy operację rozpoczętą przez BeginSend. Należy przekazać IAsyncResult utworzony przez pasujące BeginSend wywołanie.
Jeśli używasz protokołu bez połączenia, EndSend będzie blokowany do momentu wysłania datagramu. Jeśli używasz protokołu zorientowanego na połączenie, EndSend zostanie zablokowany do momentu wysłania niektórych buforów. Jeśli wartość zwracana z EndSend parametru wskazuje, że bufor nie został całkowicie wysłany, wywołaj BeginSend metodę ponownie, modyfikując bufor tak, aby przechowywał niewymagające dane.
Nie ma gwarancji, że wysyłane dane zostaną natychmiast wyświetlone w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości wychodzących danych. Pomyślne ukończenie BeginSend metody oznacza, że podstawowy system miał miejsce do buforowania danych dla wysyłania sieciowego.
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
Pomyślne ukończenie wysyłania nie wskazuje, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania przesyłanych danych, wyślij blok, chyba że gniazdo zostało umieszczone w trybie bezblokowania.
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ż
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay