Sdílet prostřednictvím


Socket.EndSend Metoda

Definice

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

Přetížení

Name Description
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
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

Obsahuje IAsyncResult informace o stavu pro tuto asynchronní operaci.

Návraty

V případě úspěchu počet bajtů odeslaných na Socketadresu ; v opačném případě došlo k neplatné 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+ : Tato Socket možnost byla uzavřena.

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

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 Taskzákladech.

EndSend dokončí operaci, kterou BeginSendspustil . Musíte předat vytvořenou IAsyncResult odpovídajícím BeginSend voláním.

Pokud používáte protokol bez připojení, EndSend zablokuje se, dokud se datagram odešle. Pokud používáte protokol orientovaný na připojení, EndSend zablokuje se, dokud se některá vyrovnávací paměť nesměruje. Pokud vrácená hodnota z EndSend indikuje, že vyrovnávací paměť nebyla zcela odeslána, zavolejte metodu BeginSend znovu a upravte vyrovnávací paměť tak, aby držela neodeslaná data.

Není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení BeginSend metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.

Poznámka:

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

Poznámka:

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

Poznámka:

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

Poznámka:

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete 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
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

Obsahuje IAsyncResult 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 na Socketadresu ; v opačném případě došlo k neplatné 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+ : Tato Socket možnost byla uzavřena.

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

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 Taskzákladech.

EndSend dokončí operaci, kterou BeginSendspustil . Musíte předat vytvořenou IAsyncResult odpovídajícím BeginSend voláním.

Pokud používáte protokol bez připojení, EndSend zablokuje se, dokud se datagram odešle. Pokud používáte protokol orientovaný na připojení, EndSend zablokuje se, dokud se některá vyrovnávací paměť nesměruje. Pokud vrácená hodnota z EndSend indikuje, že vyrovnávací paměť nebyla zcela odeslána, zavolejte metodu BeginSend znovu a upravte vyrovnávací paměť tak, aby držela neodeslaná data.

Není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení BeginSend metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.

Poznámka:

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

Poznámka:

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

Poznámka:

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

Poznámka:

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro