Sdílet prostřednictvím


Socket.EndSend Metoda

Definice

Ukončí čekající asynchronní odeslání.

Přetížení

EndSend(IAsyncResult)

Ukončí čekající asynchronní odeslání.

EndSend(IAsyncResult, SocketError)

Ukončí čekající asynchronní odeslání.

EndSend(IAsyncResult)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Ukončí čekající asynchronní odeslání.

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

Objekt IAsyncResult , který ukládá informace o stavu pro tuto asynchronní operaci.

Návraty

V případě úspěchu počet bajtů odeslaných do . V opačném případě dojde k Socketneplatné Socket chybě.

Výjimky

asyncResult je null.

EndSend(IAsyncResult) byl dříve volán pro asynchronní odesílání.

Při pokusu o přístup k soketu došlo k chybě.

-nebo-

Pouze .NET 7+: Byl Socket uzavřen.

Pouze rozhraní .NET Framework, .NET Core a .NET 5-6: Byl Socket uzavřen.

Poznámky

Důležité

Toto je rozhraní API pro kompatibilitu. Pro nový vývoj nedoporučujeme používat metody APM (Begin* a End*). Místo toho použijte ekvivalenty založené na Task.

EndSend dokončí operaci spuštěnou nástrojem BeginSend. Musíte předat IAsyncResult vytvořené odpovídající BeginSend volání.

Pokud používáte protokol bez připojení, bude blokovat, EndSend dokud se datagram odešle. Pokud používáte protokol orientovaný na připojení, bude blokovat, EndSend dokud nebude odeslána část vyrovnávací paměti. Pokud návratová hodnota z EndSend znamená, že vyrovnávací paměť nebyla zcela odeslána, zavolejte metodu BeginSend znovu a upravte vyrovnávací paměť tak, aby se dochovala neodeslaná data.

Neexistuje žádná záruka, že se odeslaná data zobrazí v síti okamžitě. Za účelem zvýšení efektivity sítě může základní systém zpozdit přenos, dokud se neshromáždí významné množství odchozích dat. Úspěšné dokončení BeginSend metody znamená, že základní systém měl prostor pro ukládání dat do vyrovnávací paměti pro odeslání do sítě.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby.

Poznámka

Všechny vstupně-výstupní operace iniciované daným vláknem se při ukončení vlákna zruší. Čekající asynchronní operace může selhat, pokud se vlákno ukončí před dokončením operace.

Poznámka

Úspěšné dokončení odeslání neznamená, že data byla úspěšně doručena. Pokud v rámci přenosového systému není k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud soket není umístěn v režimu neblokování.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

EndSend(IAsyncResult, SocketError)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Ukončí čekající asynchronní odeslání.

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

Objekt IAsyncResult , který ukládá informace o stavu pro tuto asynchronní operaci.

errorCode
SocketError

Objekt SocketError , který ukládá chybu soketu.

Návraty

V případě úspěchu počet bajtů odeslaných do . V opačném případě dojde k Socketneplatné Socket chybě.

Výjimky

asyncResult je null.

EndSend(IAsyncResult) byl dříve volán pro asynchronní odesílání.

Při pokusu o přístup k soketu došlo k chybě.

-nebo-

Pouze .NET 7+: Byl Socket uzavřen.

Pouze rozhraní .NET Framework, .NET Core a .NET 5-6: Byl Socket uzavřen.

Poznámky

Důležité

Toto je rozhraní API pro kompatibilitu. Pro nový vývoj nedoporučujeme používat metody APM (Begin* a End*). Místo toho použijte ekvivalenty založené na Task.

EndSend dokončí operaci spuštěnou nástrojem BeginSend. Musíte předat IAsyncResult vytvořené odpovídající BeginSend volání.

Pokud používáte protokol bez připojení, bude blokovat, EndSend dokud se datagram odešle. Pokud používáte protokol orientovaný na připojení, bude blokovat, EndSend dokud nebude odeslána část vyrovnávací paměti. Pokud návratová hodnota z EndSend znamená, že vyrovnávací paměť nebyla zcela odeslána, zavolejte metodu BeginSend znovu a upravte vyrovnávací paměť tak, aby se dochovala neodeslaná data.

Neexistuje žádná záruka, že se odeslaná data zobrazí v síti okamžitě. Za účelem zvýšení efektivity sítě může základní systém zpozdit přenos, dokud se neshromáždí významné množství odchozích dat. Úspěšné dokončení BeginSend metody znamená, že základní systém měl prostor pro ukládání dat do vyrovnávací paměti pro odeslání do sítě.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby.

Poznámka

Všechny vstupně-výstupní operace iniciované daným vláknem se při ukončení vlákna zruší. Čekající asynchronní operace může selhat, pokud se vlákno ukončí před dokončením operace.

Poznámka

Úspěšné dokončení odeslání neznamená, že data byla úspěšně doručena. Pokud v rámci přenosového systému není k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud soket není umístěn v režimu neblokování.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro