Sdílet prostřednictvím


Socket.SendToAsync Metoda

Definice

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

e
SocketAsyncEventArgs

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 .

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ě.

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ě.

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ě.

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ě.

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ě.

Token zrušení byl zrušen. Tato výjimka je uložena ve vrácené úloze.

Platí pro