Socket.EndSend Metoda

Definicja

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 , który przechowuje informacje o stanie dla tej operacji asynchronicznej.

Zwraca

W przypadku powodzenia liczba bajtów wysłanych do obiektu Socket; w przeciwnym razie nieprawidłowy Socket błąd.

Wyjątki

asyncResult to null.

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

EndSend(IAsyncResult) został wcześniej wywołany do wysyłania 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ć Taskodpowiedników opartych na protokole .

EndSend kończy operację rozpoczętą przez BeginSend. Musisz przekazać IAsyncResult utworzony przez odpowiednie BeginSend wywołanie.

Jeśli używasz protokołu bez połączenia, EndSend zablokuje się do momentu wysłania datagramu. Jeśli używasz protokołu zorientowanego na połączenie, EndSend zablokuje do momentu wysłania części buforu. Jeśli wartość zwracana z EndSend wskazuje, że bufor nie został całkowicie wysłany, wywołaj BeginSend metodę ponownie, modyfikując bufor w celu przechowywania nieuprzyjanych danych.

Nie ma gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie BeginSend metody oznacza, że podstawowy system miał miejsce na buforować dane 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 danych do przesłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie odblokowywania.

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ż

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 , który przechowuje 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 obiektu Socket; w przeciwnym razie nieprawidłowy Socket błąd.

Wyjątki

asyncResult to null.

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

EndSend(IAsyncResult) został wcześniej wywołany do wysyłania 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ć Taskodpowiedników opartych na protokole .

EndSend kończy operację rozpoczętą przez BeginSend. Musisz przekazać IAsyncResult utworzony przez odpowiednie BeginSend wywołanie.

Jeśli używasz protokołu bez połączenia, EndSend zablokuje się do momentu wysłania datagramu. Jeśli używasz protokołu zorientowanego na połączenie, EndSend zablokuje do momentu wysłania części buforu. Jeśli wartość zwracana z EndSend wskazuje, że bufor nie został całkowicie wysłany, wywołaj BeginSend metodę ponownie, modyfikując bufor w celu przechowywania nieuprzyjanych danych.

Nie ma gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie BeginSend metody oznacza, że podstawowy system miał miejsce na buforować dane 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 danych do przesłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie odblokowywania.

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ż

Dotyczy