Socket.BeginSend Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odesílá data asynchronně do připojeného Socketobjektu .
Přetížení
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) |
Odesílá data asynchronně do připojeného Socketobjektu . |
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) |
Odesílá data asynchronně do připojeného Socketobjektu . |
BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) |
Odesílá data asynchronně do připojeného Socketobjektu . |
BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) |
Odesílá data asynchronně do připojeného Socketobjektu . |
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odesílá data asynchronně do připojeného Socketobjektu .
public:
IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- buffers
- IList<ArraySegment<Byte>>
Pole typu Byte , které obsahuje data k odeslání.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
- callback
- AsyncCallback
Delegát.AsyncCallback
- state
- Object
Objekt, který obsahuje informace o stavu pro tento požadavek.
Návraty
Odkazuje IAsyncResult na asynchronní odesílání.
Výjimky
buffers
je null
.
buffers
je prázdné.
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.
Byla Socket uzavřena.
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
.
Zpětné volání, které se implementuje AsyncCallback do BeginSend , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginSend V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true
aby bylo možné označit, že metoda byla dokončena synchronně.
AsyncState K získání objektu stavu předaného BeginSend metodě použijte vlastnost IAsyncResult .
Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem AsyncCallback . EndSend až do dokončení operace zablokuje volající vlákno.
I když jsou určeny pro protokoly orientované na připojení, BeginSend funguje také pro protokoly bez připojení, za předpokladu, že nejprve zavoláte metodu Connect nebo BeginConnect k vytvoření výchozího vzdáleného hostitele. Pokud používáte protokol bez připojení a plánujete odesílat data několika různým hostitelům, měli byste použít BeginSendTo. Použití je v pořádku BeginSendTo i po vytvoření výchozího vzdáleného hostitele s Connectnástrojem . Výchozího vzdáleného hostitele můžete před voláním BeginSend změnit také jiným voláním nebo ConnectBeginConnect. U protokolů bez připojení musíte mít také jistotu, že velikost vyrovnávací paměti nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a BeginSend vyvolá .SocketException
Pokud jako socketflags
parametr zadáte DontRoute příznak, nebudou odesílaná data směrována.
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 jsou při ukončení vlákna zrušeny. Čekající asynchronní operace může selhat, pokud se vlákno ukončí před dokončením operace.
Poznámka
state
je instance třídy definované uživatelem.
Poznámka
Úspěšné dokončení odeslání neznamená, že data byla úspěšně doručena. Pokud není v přenosovém systému k dispozici žádné místo ve vyrovnávací paměti pro uložení dat, která se mají přenést, bude odesílání blokováno, pokud soket není umístěn v režimu odbloková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.
Poznámka
Kontext spuštění (kontext zabezpečení, zosobněný uživatel a kontext volání) se ukládá do mezipaměti pro asynchronní Socket metody. Po prvním použití určitého kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání) dojde při dalších použitích tohoto kontextu ke zlepšení výkonu.
Viz také
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Zařazování delegáta jako metody zpětného volání
- Příklad asynchronního klientského soketu
- Příklad asynchronního serverového soketu
Platí pro
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odesílá data asynchronně do připojeného Socketobjektu .
public:
IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- buffers
- IList<ArraySegment<Byte>>
Pole typu Byte , které obsahuje data k odeslání.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
- errorCode
- SocketError
Objekt SocketError , který ukládá chybu soketu.
- callback
- AsyncCallback
Delegát.AsyncCallback
- state
- Object
Objekt, který obsahuje informace o stavu pro tento požadavek.
Návraty
Odkazuje IAsyncResult na asynchronní odesílání.
Výjimky
buffers
je null
.
buffers
je prázdné.
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.
Byla Socket uzavřena.
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
.
Zpětné volání, které se implementuje AsyncCallback do BeginSend , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginSend V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true
aby bylo možné označit, že metoda byla dokončena synchronně.
AsyncState K získání objektu stavu předaného BeginSend metodě použijte vlastnost IAsyncResult .
Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem AsyncCallback . EndSend až do dokončení operace zablokuje volající vlákno.
I když jsou určeny pro protokoly orientované na připojení, BeginSend funguje také pro protokoly bez připojení, za předpokladu, že nejprve zavoláte metodu Connect nebo BeginConnect k vytvoření výchozího vzdáleného hostitele. Pokud používáte protokol bez připojení a plánujete odesílat data několika různým hostitelům, měli byste použít BeginSendTo. Použití je v pořádku BeginSendTo i po vytvoření výchozího vzdáleného hostitele s Connectnástrojem . Výchozího vzdáleného hostitele můžete před voláním BeginSend změnit také jiným voláním nebo ConnectBeginConnect. U protokolů bez připojení musíte mít také jistotu, že velikost vyrovnávací paměti nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a BeginSend vyvolá .SocketException
Pokud jako socketflags
parametr zadáte DontRoute příznak, nebudou odesílaná data směrována.
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 jsou při ukončení vlákna zrušeny. Čekající asynchronní operace může selhat, pokud se vlákno ukončí před dokončením operace.
Poznámka
state
je instance třídy definované uživatelem.
Poznámka
Úspěšné dokončení odeslání neznamená, že data byla úspěšně doručena. Pokud není v přenosovém systému k dispozici žádné místo ve vyrovnávací paměti pro uložení dat, která se mají přenést, bude odesílání blokováno, pokud soket není umístěn v režimu odbloková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.
Poznámka
Kontext spuštění (kontext zabezpečení, zosobněný uživatel a kontext volání) se ukládá do mezipaměti pro asynchronní Socket metody. Po prvním použití určitého kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání) dojde při dalších použitích tohoto kontextu ke zlepšení výkonu.
Viz také
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Zařazování delegáta jako metody zpětného volání
- Příklad asynchronního klientského soketu
- Příklad asynchronního serverového soketu
Platí pro
BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odesílá data asynchronně do připojeného Socketobjektu .
public:
IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- offset
- Int32
Pozice založená na nule v parametru buffer
, při kterém se mají začít odesílat data.
- size
- Int32
Počet bajtů k odeslání.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
- callback
- AsyncCallback
Delegát.AsyncCallback
- state
- Object
Objekt, který obsahuje informace o stavu pro tento požadavek.
Návraty
Odkazuje IAsyncResult na asynchronní odesílání.
Výjimky
buffer
je null
.
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.
offset
je menší než 0.
-nebo-
offset
je menší než délka .buffer
-nebo-
size
je menší než 0.
-nebo-
size
je větší než délka parametru buffer
minus hodnota parametru offset
.
Byla Socket uzavřena.
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
.
Zpětné volání, které se implementuje AsyncCallback do BeginSend , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginSend V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true
aby bylo možné označit, že metoda byla dokončena synchronně.
AsyncState K získání objektu stavu předaného BeginSend metodě použijte vlastnost IAsyncResult .
Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem AsyncCallback . EndSend až do dokončení operace zablokuje volající vlákno.
I když jsou určeny pro protokoly orientované na připojení, BeginSend funguje také pro protokoly bez připojení, za předpokladu, že nejprve zavoláte metodu Connect nebo BeginConnect k vytvoření výchozího vzdáleného hostitele. Pokud používáte protokol bez připojení a plánujete odesílat data několika různým hostitelům, měli byste použít BeginSendTo. Použití je v pořádku BeginSendTo i po vytvoření výchozího vzdáleného hostitele s Connectnástrojem . Výchozího vzdáleného hostitele můžete před voláním BeginSend změnit také jiným voláním nebo ConnectBeginConnect. U protokolů bez připojení musíte mít také jistotu, že velikost vyrovnávací paměti nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a BeginSend vyvolá .SocketException
Pokud jako socketflags
parametr zadáte DontRoute příznak, nebudou odesílaná data směrována.
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 jsou při ukončení vlákna zrušeny. Čekající asynchronní operace může selhat, pokud se vlákno ukončí před dokončením operace.
Poznámka
state
je instance třídy definované uživatelem.
Poznámka
Úspěšné dokončení odeslání neznamená, že data byla úspěšně doručena. Pokud není v přenosovém systému k dispozici žádné místo ve vyrovnávací paměti pro uložení dat, která se mají přenést, bude odesílání blokováno, pokud soket není umístěn v režimu odbloková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.
Poznámka
Kontext spuštění (kontext zabezpečení, zosobněný uživatel a kontext volání) se ukládá do mezipaměti pro asynchronní Socket metody. Po prvním použití určitého kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání) dojde při dalších použitích tohoto kontextu ke zlepšení výkonu.
Viz také
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Zařazování delegáta jako metody zpětného volání
- Příklad asynchronního klientského soketu
- Příklad asynchronního serverového soketu
Platí pro
BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odesílá data asynchronně do připojeného Socketobjektu .
public:
IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- offset
- Int32
Pozice založená na nule v parametru buffer
, při kterém se mají začít odesílat data.
- size
- Int32
Počet bajtů k odeslání.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
- errorCode
- SocketError
Objekt SocketError , který ukládá chybu soketu.
- callback
- AsyncCallback
Delegát.AsyncCallback
- state
- Object
Objekt, který obsahuje informace o stavu pro tento požadavek.
Návraty
Odkazuje IAsyncResult na asynchronní odesílání.
Výjimky
buffer
je null
.
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.
offset
je menší než 0.
-nebo-
offset
je menší než délka .buffer
-nebo-
size
je menší než 0.
-nebo-
size
je větší než délka parametru buffer
minus hodnota parametru offset
.
Byla Socket uzavřena.
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
.
Zpětné volání, které se implementuje AsyncCallback do BeginSend , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginSend V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true
aby bylo možné označit, že metoda byla dokončena synchronně.
AsyncState K získání objektu stavu předaného BeginSend metodě použijte vlastnost IAsyncResult .
Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem AsyncCallback . EndSend až do dokončení operace zablokuje volající vlákno.
I když jsou určeny pro protokoly orientované na připojení, BeginSend funguje také pro protokoly bez připojení, za předpokladu, že nejprve zavoláte metodu Connect nebo BeginConnect k vytvoření výchozího vzdáleného hostitele. Pokud používáte protokol bez připojení a plánujete odesílat data několika různým hostitelům, měli byste použít BeginSendTo. Použití je v pořádku BeginSendTo i po vytvoření výchozího vzdáleného hostitele s Connectnástrojem . Výchozího vzdáleného hostitele můžete před voláním BeginSend změnit také jiným voláním nebo ConnectBeginConnect. U protokolů bez připojení musíte mít také jistotu, že velikost vyrovnávací paměti nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a BeginSend vyvolá .SocketException
Pokud jako socketflags
parametr zadáte DontRoute příznak, nebudou odesílaná data směrována.
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 jsou při ukončení vlákna zrušeny. Čekající asynchronní operace může selhat, pokud se vlákno ukončí před dokončením operace.
Poznámka
state
je instance třídy definované uživatelem.
Poznámka
Úspěšné dokončení odeslání neznamená, že data byla úspěšně doručena. Pokud není v přenosovém systému k dispozici žádné místo ve vyrovnávací paměti pro uložení dat, která se mají přenést, bude odesílání blokováno, pokud soket není umístěn v režimu odbloková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.
Poznámka
Kontext spuštění (kontext zabezpečení, zosobněný uživatel a kontext volání) se ukládá do mezipaměti pro asynchronní Socket metody. Po prvním použití určitého kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání) dojde při dalších použitích tohoto kontextu ke zlepšení výkonu.
Viz také
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Zařazování delegáta jako metody zpětného volání
- Příklad asynchronního klientského soketu
- Příklad asynchronního serverového soketu