Sdílet prostřednictvím


Socket.SendToAsync Metoda

Definice

Přetížení

Name Description
SendToAsync(SocketAsyncEventArgs)

Odesílá data asynchronně na konkrétního vzdáleného hostitele.

SendToAsync(ArraySegment<Byte>, EndPoint)

Odešle data určenému vzdálenému hostiteli.

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Odešle data určenému vzdálenému hostiteli.

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Odešle data určenému vzdálenému hostiteli.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

Odešle data určenému vzdálenému hostiteli.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu .

SendToAsync(SocketAsyncEventArgs)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Odesílá data asynchronně na konkrétního vzdáleného hostitele.

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 bude vyvolána po dokončení operace.

false pokud se vstupně-výstupní operace dokončila synchronně. V tomto případě Completed nebude vyvolána událost parametru e a e objekt předaný jako parametr může být zkoumán okamžitě po volání metody vrátí načíst výsledek operace.

Výjimky

Hodnota RemoteEndPoint nemůže být null.

Operace soketu již probíhala pomocí objektu SocketAsyncEventArgs zadaného v parametru e .

Ta Socket byla uzavřena.

Zadaný protokol je orientovaný na připojení, ale Socket zatím není připojený.

Poznámky

Metoda SendToAsync spustí asynchronní operaci odeslání vzdálenému hostiteli zadanému ve SocketAsyncEventArgs.RemoteEndPoint vlastnosti parametru e . SendToAsync Volání metody umožňuje odesílat data v samostatném vlákně spuštění. 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 delegáta EventHandler<SocketAsyncEventArgs> a připojit zpětné volání k SocketAsyncEventArgs.Completed události.

K úspěšnému volání této metody jsou vyžadovány následující vlastnosti a události objektu System.Net.Sockets.SocketAsyncEventArgs :

Volající může před voláním SocketAsyncEventArgs.UserToken metody nastavit SendToAsync vlastnost na libovolný objekt stavu uživatele, aby informace byly v metodě zpětného volání dostupné. Pokud zpětné volání potřebuje více informací než jeden objekt, lze 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 Accept, AcceptAsync, BeginAccept, BeginConnectConnectnebo ConnectAsync metodu. Jinak SendToAsync vyvolá výjimku SocketException. Při použití protokolu SendToAsync orientovaného na připojení bude metoda ignorovat SocketAsyncEventArgs.RemoteEndPoint vlastnost a odeslat data do System.Net.EndPoint zavedené v Accept, AcceptAsync, BeginAccept, BeginConnect, , Connect, , nebo ConnectAsync metoda.

Pokud používáte protokol bez připojení, nemusíte před voláním SendToAsyncnavázat výchozího vzdáleného hostitele s BeginConnectnástrojem , Connectnebo ConnectAsync metodou . Stačí to udělat jenom v případě, že chcete volat BeginSend metody nebo SendAsync metody. Pokud před voláním zavoláte BeginConnect, Connectnebo ConnectAsync metoduSocketAsyncEventArgs.RemoteEndPoint, vlastnost přepíše zadané výchozí vzdáleného hostitele SendToAsyncpouze pro tuto operaci odeslání. Také není nutné volat metodu Bind . V tomto případě přiřadí poskytovatel základní služby nejvhodnější IP 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 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 volat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast 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 vyvolají .SocketException

Pokud ve SocketAsyncEventArgs.SocketFlags vlastnosti zadáte příznak DontRoute, nebudou data, která odesíláte, směrována.

U soketů orientovaných na zprávy je třeba věnovat pozornost tomu, aby nepřekročila maximální velikost zprávy podkladového přenosu. Pokud velikost vyrovnávací paměti překročí maximální velikost paketu základní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
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Odešle data určenému vzdálenému hostiteli.

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 odesílání dat.

remoteEP
EndPoint

Vzdálený hostitel, do kterého chcete 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ě.

Ta Socket byla uzavřena.

Platí pro

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Odešle data určenému vzdálenému hostiteli.

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 odesílání dat.

socketFlags
SocketFlags

Bitové kombinace hodnot SocketFlags, které budou použity při odesílání dat.

remoteEP
EndPoint

Vzdálený hostitel, do kterého chcete 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ě.

Ta Socket byla uzavřena.

Platí pro

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Odešle data určenému vzdálenému hostiteli.

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 odesílání dat.

remoteEP
EndPoint

Vzdálený hostitel, do kterého chcete 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ě.

Ta Socket byla uzavřena.

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

Platí pro

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Odešle data určenému vzdálenému hostiteli.

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 odesílání dat.

socketFlags
SocketFlags

Bitové kombinace hodnot SocketFlags, které budou použity při odesílání dat.

remoteEP
EndPoint

Vzdálený hostitel, do kterého chcete 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ě.

Ta Socket byla uzavřena.

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

Platí pro

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs
Zdroj:
Socket.Tasks.cs

Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu .

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 odesílání dat.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot, které se použijí při odesílání dat.

socketAddress
SocketAddress

Představuje SocketAddress 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ě.

Ta Socket byla uzavřena.

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

Platí pro