Socket.BeginSendTo 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 konkrétního vzdáleného hostitele.
public:
IAsyncResult ^ BeginSendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- offset
- Int32
Pozice založená na nule, ve buffer
které 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
Pouze rozhraní .NET Framework a .NET 5 a starší: Při pokusu o přístup k soketu došlo k chybě.
offset
je menší než 0.
-nebo-
offset
je větší 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.
Volající výše v zásobníku volání nemá oprávnění k požadované operaci.
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 BeginSendTo , 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í .BeginSendTo 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 BeginSendTo metodě použijte vlastnost IAsyncResult .
Operace BeginSendTo musí být dokončena voláním EndSendTo metody . Metoda je obvykle vyvolána poskytnutým AsyncCallback delegátem. EndSendTo až do dokončení operace zablokuje volající vlákno.
Pokud používáte protokol orientovaný na připojení, musíte nejprve volat metodu , , Accept, nebo BeginAccept nebo vyvolá metodu SocketException.BeginSendToBeginConnectConnect
BeginSendTobude parametr ignorovat remoteEP
a odesílat data do ConnectEndPoint metody , BeginConnect, Accept, nebo BeginAccept .
Pokud používáte protokol bez připojení, nemusíte před voláním SendTovytvořit výchozího vzdáleného Connect hostitele pomocí metody nebo BeginConnect . Stačí to provést pouze v případě, že máte v úmyslu volat metodu BeginSend . Pokud zavoláte metodu Connect nebo BeginConnect před voláním SendTometody , remoteEP
parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také nemusíte volat metodu Bind . V takovém případě podkladový poskytovatel služeb přiřadí nejvhodnější místní síťovou adresu a číslo portu. Pokud chcete, aby podkladový poskytovatel služeb vybral bezplatný port, použijte číslo portu nula. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete po EndSendTo úspěšném dokončení metody použít LocalEndPoint vlastnost .
Pokud chcete odesílat data na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast. –Musíte také zajistit, aby velikost vyrovnávací paměti nepřekračovala maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a EndSendTo 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. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .
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.