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ě na 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ů, které se mají odeslat.
- 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
Odkaz IAsyncResult na asynchronní odeslá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 buffer minus hodnota parametru offset .
Ta Socket byla uzavřena.
Volající vyšší v zásobníku volání nemá oprávnění pro požadovanou 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 Taskzákladech.
Můžete předat zpětné volání, které implementuje AsyncCallback , BeginSendTo aby bylo možné dostávat oznámení o dokončení operace. Všimněte si, že pokud podkladový síťový zásobník dokončí operaci synchronně, bude zpětné volání spuštěno přímo během volání BeginSendTo. V tomto případě bude vlastnost vrácena CompletedSynchronously nastavena tak, aby IAsyncResult indikovat, true že metoda byla dokončena synchronně.
AsyncState Použijte vlastnost IAsyncResult k získání objektu stavu předaného metoděBeginSendTo.
Operace BeginSendTo musí být dokončena voláním EndSendTo metody. Metoda je obvykle vyvolána zadaným AsyncCallback delegátem. EndSendTo zablokuje volající vlákno, dokud se operace nedokončila.
Pokud používáte protokol orientovaný na připojení, musíte nejprve volat Connect, BeginConnect, Accept, nebo BeginAccept metodu, nebo BeginSendTo vyvolá .SocketException
BeginSendTo bude ignorovat remoteEP parametr a odesílat data do EndPoint zavedené v Connect, BeginConnect, Accept, nebo BeginAccept metoda.
Pokud používáte protokol bez připojení, nemusíte před voláním navázat výchozího vzdáleného hostitele s metodou Connect ani BeginConnect s ním SendTo. Stačí to udělat jenom v případě, že chcete metodu BeginSend volat. Pokud voláte metodu nebo BeginConnect metodu Connect před volánímSendTo, remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také není nutné volat metodu Bind . V tomto případě přiřadí poskytovatel základní služby nejvhodnější adresu místní sítě a číslo portu. Pokud chcete, aby základní 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 vlastnost použít LocalEndPoint po EndSendTo úspěšném dokončení metody.
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 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 EndSendTo vyvolají .SocketException
Pokud jako parametr zadáte DontRoute příznak, data, která odesíláte, nebudou socketflags směrována.
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
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.
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í konkrétního kontextu (konkrétní asynchronní Socket metoda, konkrétní Socket instance a konkrétní zpětné volání), následné použití tohoto kontextu uvidí zlepšení výkonu.