Socket.SendToAsync 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í.
Přetížení
SendToAsync(SocketAsyncEventArgs) |
Odesílá data asynchronně konkrétnímu vzdálenému hostiteli. |
SendToAsync(ArraySegment<Byte>, EndPoint) |
Odesílá data do zadaného vzdáleného hostitele. |
SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint) |
Odesílá data do zadaného vzdáleného hostitele. |
SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken) |
Odesílá data do zadaného vzdáleného hostitele. |
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken) |
Odesílá data do zadaného vzdáleného hostitele. |
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken) |
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlags. |
SendToAsync(SocketAsyncEventArgs)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odesílá data asynchronně konkrétnímu vzdálenému hostiteli.
public:
bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean
Parametry
Objekt SocketAsyncEventArgs , který se má použít pro tuto asynchronní operaci soketu.
Návraty
true
pokud operace vstupně-výstupní operace čeká na vyřízení. Událost Completed parametru e
se vyvolá po dokončení operace.
false
pokud se vstupně-výstupní operace dokončila synchronně. V tomto případě událost parametru e
nebude vyvolána a e
objekt předaný jako parametr může být zkontrolován okamžitě poté, Completed co volání metody vrátí výsledek operace.
Výjimky
Hodnota RemoteEndPoint nesmí být null.
Operace soketu již probíhala pomocí objektu SocketAsyncEventArgs zadaného v parametru e
.
Byl Socket zavřený.
Zadaný protokol je orientovaný na připojení, ale Socket zatím není připojený.
Poznámky
Metoda SendToAsync spustí asynchronní operaci odesílání vzdálenému hostiteli zadanému SocketAsyncEventArgs.RemoteEndPoint ve vlastnosti parametru e
.
SendToAsync Volání metody umožňuje odesílat data v samostatném spouštěcím vlákně. I když je tato metoda určená pro protokoly bez připojení, SendToAsync funguje s protokoly bez připojení i s protokoly orientovanými na připojení.
Chcete-li být upozorněni na dokončení, musíte vytvořit metodu zpětného volání, která implementuje EventHandler<SocketAsyncEventArgs> delegáta a připojit zpětné volání k SocketAsyncEventArgs.Completed události.
K úspěšnému System.Net.Sockets.SocketAsyncEventArgs volání této metody jsou vyžadovány následující vlastnosti a události objektu:
Volající může nastavit SocketAsyncEventArgs.UserToken vlastnost na libovolný objekt stavu uživatele požadovaný před voláním SendToAsync metody, aby informace byly možné získat v metodě zpětného volání. Pokud zpětné volání potřebuje více informací než jeden objekt, je možné vytvořit malou třídu, která bude obsahovat další požadované informace o stavu jako členy.
Pokud používáte protokol orientovaný na připojení, musíte nejprve volat metodu Accept, AcceptAsync, BeginAccept, BeginConnect, Connectnebo ConnectAsync . Jinak SendToAsync vyhodí SocketException. Při použití protokolu SendToAsync orientovaného na připojení bude metoda ignorovat SocketAsyncEventArgs.RemoteEndPoint vlastnost a odešle data do System.Net.EndPoint metody , AcceptAsyncAccept, BeginAccept, BeginConnectConnectnebo ConnectAsync .
Pokud používáte protokol bez připojení, nemusíte před voláním SendToAsyncvytvořit výchozího vzdáleného hostitele pomocí BeginConnectmetody , Connectnebo ConnectAsync . Stačí to udělat jenom v případě, že máte v úmyslu BeginSend volat metody nebo SendAsync . Pokud zavoláte metodu BeginConnect, Connectnebo ConnectAsync před voláním SendToAsync, SocketAsyncEventArgs.RemoteEndPoint vlastnost 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ě příslušný poskytovatel služeb přiřadí nejvhodnější IP adresu místní sítě 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 IP adresu místní sítě a číslo portu, můžete vlastnost použít LocalEndPoint po signálu SocketAsyncEventArgs.Completed události a zavolání přidružených delegátů.
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 hodnotu true. Musíte také mít 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 SendToAsync vyvolá SocketException.
Pokud ve SocketAsyncEventArgs.SocketFlags vlastnosti zadáte příznak DontRoute, nebudou odesílaná data směrována.
U soketů orientovaných na zprávy je třeba věnovat pozornost tomu, aby nedošlo k překročení maximální velikosti zprávy podkladového přenosu. Pokud velikost vyrovnávací paměti překročí maximální velikost paketů podkladového poskytovatele služeb, datagram se neodesílají a SendToAsync vyvolá SocketException. Úspěšné dokončení SendToAsync metody neznamená, že data byla úspěšně doručena.
Viz také
Platí pro
SendToAsync(ArraySegment<Byte>, EndPoint)
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
Odesílá data do zadaného vzdáleného hostitele.
public:
System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), remoteEP As EndPoint) As Task(Of Integer)
Parametry
- buffer
- ArraySegment<Byte>
Vyrovnávací paměť pro data, která se mají odesílat.
- remoteEP
- EndPoint
Vzdálený hostitel, na který se mají data odeslat.
Návraty
Asynchronní úloha, která se dokončí s počtem odeslaných bajtů.
Výjimky
remoteEP
je null
.
Při pokusu o přístup k soketu došlo k chybě.
Byl Socket zavřený.
Platí pro
SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
Odesílá data do zadaného vzdáleného hostitele.
public:
System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Task(Of Integer)
Parametry
- buffer
- ArraySegment<Byte>
Vyrovnávací paměť pro data, která se mají odesílat.
- socketFlags
- SocketFlags
Bitové kombinace hodnot SocketFlags, které se použijí při odesílání dat.
- remoteEP
- EndPoint
Vzdálený hostitel, na který se mají data odeslat.
Návraty
Asynchronní úloha, která se dokončí s počtem odeslaných bajtů.
Výjimky
remoteEP
je null
.
Při pokusu o přístup k soketu došlo k chybě.
Byl Socket zavřený.
Platí pro
SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
Odesílá data do zadaného vzdáleného hostitele.
public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parametry
- buffer
- ReadOnlyMemory<Byte>
Vyrovnávací paměť pro data, která se mají odesílat.
- remoteEP
- EndPoint
Vzdálený hostitel, na který se mají data odeslat.
- cancellationToken
- CancellationToken
Token zrušení, který lze použít ke zrušení asynchronní operace.
Návraty
Asynchronní úloha, která se dokončí s počtem odeslaných bajtů.
Výjimky
remoteEP
je null
.
Při pokusu o přístup k soketu došlo k chybě.
Byl Socket zavřený.
Token zrušení byl zrušen. Tato výjimka je uložena ve vrácené úloze.
Platí pro
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
Odesílá data do zadaného vzdáleného hostitele.
public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parametry
- buffer
- ReadOnlyMemory<Byte>
Vyrovnávací paměť pro data, která se mají odesílat.
- socketFlags
- SocketFlags
Bitové kombinace hodnot SocketFlags, které se použijí při odesílání dat.
- remoteEP
- EndPoint
Vzdálený hostitel, na který se mají data odeslat.
- cancellationToken
- CancellationToken
Token zrušení, který lze použít ke zrušení asynchronní operace.
Návraty
Asynchronní úloha, která se dokončí s počtem odeslaných bajtů.
Výjimky
remoteEP
je null
.
Při pokusu o přístup k soketu došlo k chybě.
Byl Socket zavřený.
Token zrušení byl zrušen. Tato výjimka je uložena ve vrácené úloze.
Platí pro
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)
- Zdroj:
- Socket.Tasks.cs
- Zdroj:
- Socket.Tasks.cs
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlags.
public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parametry
- buffer
- ReadOnlyMemory<Byte>
Vyrovnávací paměť pro data, která se mají odesílat.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot, které se použijí při odesílání dat.
- socketAddress
- SocketAddress
Hodnota SocketAddress , která představuje cíl dat.
- cancellationToken
- CancellationToken
Token zrušení, který lze použít ke zrušení asynchronní operace.
Návraty
Asynchronní úloha, která se dokončí s počtem odeslaných bajtů.
Výjimky
socketAddress
je null
.
Při pokusu o přístup k soketu došlo k chybě.
Byl Socket zavřený.
Token zrušení byl zrušen. Tato výjimka je uložena ve vrácené úloze.