Condividi tramite


Socket.SendToAsync Metodo

Definizione

Overload

SendToAsync(SocketAsyncEventArgs)

Invia i dati in modo asincrono a un host remoto specifico.

SendToAsync(ArraySegment<Byte>, EndPoint)

Invia i dati all'host remoto specificato.

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Invia i dati all'host remoto specificato.

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Invia i dati all'host remoto specificato.

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

Invia i dati all'host remoto specificato.

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

Invia dati a un endpoint specifico utilizzando l'oggetto SocketFlags specificato.

SendToAsync(SocketAsyncEventArgs)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia i dati in modo asincrono a un host remoto specifico.

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

Parametri

e
SocketAsyncEventArgs

Oggetto SocketAsyncEventArgs da utilizzare per questa operazione socket asincrona.

Restituisce

true se l'operazione di I/O è in sospeso. Al completamento dell'operazione verrà generato l'evento Completed sul parametro e.

false se l'operazione di I/O è stata completata in modo sincrono. In questo caso, l'evento Completed sul parametro e non verrà generato e l'oggetto e passato come parametro potrebbe essere esaminato immediatamente dopo che la chiamata al metodo è stata restituita per recuperare il risultato dell'operazione.

Eccezioni

L'oggetto RemoteEndPoint non può essere null.

Era già in corso un'operazione di socket che utilizza l'oggetto SocketAsyncEventArgs specificato nel parametro e.

L'oggetto Socket è stato chiuso.

Il protocollo specificato è orientato alla connessione, ma l'oggetto Socket non è ancora connesso.

Commenti

Il SendToAsync metodo avvia un'operazione di invio asincrona all'host remoto specificato nella SocketAsyncEventArgs.RemoteEndPoint proprietà del e parametro . La chiamata al SendToAsync metodo consente di inviare dati all'interno di un thread di esecuzione separato. Anche se questo metodo è destinato ai protocolli senza connessione, SendToAsync funziona con protocolli sia senza connessione che orientati alla connessione.

Per ricevere una notifica di completamento, è necessario creare un metodo di callback che implementa il delegato EventHandler<SocketAsyncEventArgs> e collegare il callback all'evento SocketAsyncEventArgs.Completed .

Per chiamare correttamente questo metodo, sono necessari gli eventi e le proprietà seguenti sull'oggetto System.Net.Sockets.SocketAsyncEventArgs :

Il chiamante può impostare la SocketAsyncEventArgs.UserToken proprietà su qualsiasi oggetto stato utente desiderato prima di chiamare il SendToAsync metodo, in modo che le informazioni siano recuperabili nel metodo di callback. Se il callback richiede più informazioni di un singolo oggetto, è possibile creare una classe piccola per contenere le altre informazioni sullo stato necessarie come membri.

Se si usa un protocollo orientato alla connessione, è prima necessario chiamare il Acceptmetodo , AcceptAsync, BeginAcceptBeginConnect, Connect, o ConnectAsync . In caso contrario SendToAsync , genererà un'eccezione SocketException. Quando si usa un protocollo orientato alla connessione, il SendToAsync metodo ignorerà la SocketAsyncEventArgs.RemoteEndPoint proprietà e invierà i dati all'oggetto System.Net.EndPoint stabilito nel Acceptmetodo , AcceptAsync, BeginAcceptBeginConnect, Connect, o ConnectAsync .

Se si usa un protocollo senza connessione, non è necessario stabilire un host remoto predefinito con il BeginConnectmetodo , Connecto ConnectAsync prima di chiamare SendToAsync. È sufficiente eseguire questa operazione solo se si intende chiamare i BeginSend metodi o SendAsync . Se si chiama il BeginConnectmetodo , Connecto ConnectAsync prima di chiamare SendToAsync, la SocketAsyncEventArgs.RemoteEndPoint proprietà eseguirà l'override dell'host remoto predefinito specificato solo per l'operazione di invio. Non è inoltre necessario chiamare il Bind metodo . In questo caso, il provider di servizi sottostante assegnerà l'indirizzo IP e il numero di porta di rete locali più appropriati. Usare un numero di porta pari a zero se si vuole che il provider di servizi sottostante selezioni una porta libera. Se è necessario identificare l'indirizzo IP e il numero di porta della rete locale assegnati, è possibile usare la LocalEndPoint proprietà dopo che l'evento SocketAsyncEventArgs.Completed è stato segnalato e i delegati associati vengono chiamati.

Se si desidera inviare dati a un indirizzo broadcast, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket per su SocketOptionName.Broadcast true. È inoltre necessario assicurarsi che le dimensioni del buffer non superino le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e SendToAsync genererà un'eccezione SocketException.

Se si specifica il flag DontRoute nella SocketAsyncEventArgs.SocketFlags proprietà , i dati inviati non verranno instradati.

Per i socket orientati ai messaggi, è necessario prestare attenzione a non superare le dimensioni massime del messaggio del trasporto sottostante. Se le dimensioni del buffer superano le dimensioni massime del pacchetto del provider di servizi sottostante, il datagramma non viene inviato e SendToAsync genererà un'eccezione SocketException. Il completamento corretto di un SendToAsync metodo non indica che i dati sono stati recapitati correttamente.

Vedi anche

Si applica a

SendToAsync(ArraySegment<Byte>, EndPoint)

Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs

Invia i dati all'host remoto specificato.

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)

Parametri

buffer
ArraySegment<Byte>

Buffer per i dati da inviare.

remoteEP
EndPoint

Host remoto a cui inviare i dati.

Restituisce

Attività asincrona che viene completata con il numero di byte inviati.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Si applica a

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs

Invia i dati all'host remoto specificato.

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)

Parametri

buffer
ArraySegment<Byte>

Buffer per i dati da inviare.

socketFlags
SocketFlags

Combinazione bit per bit dei valori SocketFlags che verranno usati durante l'invio dei dati.

remoteEP
EndPoint

Host remoto a cui inviare i dati.

Restituisce

Attività asincrona che viene completata con il numero di byte inviati.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Si applica a

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs

Invia i dati all'host remoto specificato.

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)

Parametri

buffer
ReadOnlyMemory<Byte>

Buffer per i dati da inviare.

remoteEP
EndPoint

Host remoto a cui inviare i dati.

cancellationToken
CancellationToken

Token di annullamento che può essere utilizzato per annullare l'operazione asincrona.

Restituisce

Attività asincrona che viene completata con il numero di byte inviati.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.

Si applica a

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

Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs

Invia i dati all'host remoto specificato.

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)

Parametri

buffer
ReadOnlyMemory<Byte>

Buffer per i dati da inviare.

socketFlags
SocketFlags

Combinazione bit per bit dei valori SocketFlags che verranno usati durante l'invio dei dati.

remoteEP
EndPoint

Host remoto a cui inviare i dati.

cancellationToken
CancellationToken

Token di annullamento che può essere utilizzato per annullare l'operazione asincrona.

Restituisce

Attività asincrona che viene completata con il numero di byte inviati.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.

Si applica a

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

Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs

Invia dati a un endpoint specifico utilizzando l'oggetto SocketFlags specificato.

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)

Parametri

buffer
ReadOnlyMemory<Byte>

Buffer per i dati da inviare.

socketFlags
SocketFlags

Combinazione bit per bit di SocketFlags valori che verranno usati durante l'invio dei dati.

socketAddress
SocketAddress

Classe SocketAddress che rappresenta la destinazione dei dati.

cancellationToken
CancellationToken

Token di annullamento che può essere utilizzato per annullare l'operazione asincrona.

Restituisce

Attività asincrona che viene completata con il numero di byte inviati.

Eccezioni

socketAddress è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.

Si applica a