Condividi tramite


Socket.SendToAsync Metodo

Definizione

Overload

Nome Descrizione
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 usando l'oggetto specificato SocketFlags.

SendToAsync(SocketAsyncEventArgs)

Origine:
Socket.cs
Origine:
Socket.cs
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. L'evento Completed sul e parametro verrà generato al termine dell'operazione.

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

Eccezioni

L'oggetto RemoteEndPoint non può essere Null.

Un'operazione socket era già in corso usando l'oggetto SocketAsyncEventArgs specificato nel e parametro .

L'oggetto Socket è stato chiuso.

Il protocollo specificato è orientato alla connessione, ma 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 SocketAsyncEventArgs EventHandler<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 saranno recuperabili nel metodo di callback. Se il callback richiede più informazioni di un singolo oggetto, è possibile creare una classe di piccole dimensioni 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 AcceptSystem.Net.EndPoint stabilito nel metodo , BeginAcceptAcceptAsync, BeginConnect, 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. Questa operazione deve essere eseguita solo se si intende chiamare i BeginSend metodi o SendAsync . Se si chiama il BeginConnectmetodo , Connecto ConnectAsync prima di chiamare SendToAsync, la proprietà eseguirà l'override SocketAsyncEventArgs.RemoteEndPoint 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 di rete locale e il numero di porta 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 la segnalazione dell'evento SocketAsyncEventArgs.Completed e i delegati associati vengono chiamati.

Se si desidera inviare dati a un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket per SocketOptionName.Broadcast su 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
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
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
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 usato 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
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 usato 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
Origine:
Socket.Tasks.cs
Origine:
Socket.Tasks.cs

Invia dati a un endpoint specifico usando l'oggetto specificato 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)

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

Oggetto SocketAddress che rappresenta la destinazione per i dati.

cancellationToken
CancellationToken

Token di annullamento che può essere usato 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