Socket.SendAsync(SocketAsyncEventArgs) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Invia i dati in modo asincrono a un oggetto connesso Socket .
public:
bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (e As SocketAsyncEventArgs) As Boolean
Parametri
Oggetto SocketAsyncEventArgs da utilizzare per questa operazione socket asincrona.
Valori restituiti
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
Le Buffer proprietà o BufferList nel e parametro devono fare riferimento a buffer validi. Una o l'altra di queste proprietà possono essere impostate, ma non entrambe contemporaneamente.
Un'operazione socket era già in corso usando l'oggetto SocketAsyncEventArgs specificato nel e parametro .
L'oggetto Socket è stato chiuso.
L'oggetto Socket non è ancora connesso o non è stato ottenuto tramite un Accept()metodo , AcceptAsync(SocketAsyncEventArgs)o BeginAccept.
Commenti
Il SendAsync metodo viene usato per scrivere dati in uscita da uno o più buffer in un socket orientato alla connessione. Questo metodo può essere usato anche nei socket senza connessione che hanno specificato un host remoto in un'operazione di connessione.
Il SendAsync metodo avvia un'operazione di invio asincrona all'host remoto stabilito nel Acceptmetodo , AcceptAsyncBeginAccept, BeginConnect, Connect, o ConnectAsync .
Per chiamare correttamente questo metodo, sono necessari gli eventi e le proprietà seguenti sull'oggetto System.Net.Sockets.SocketAsyncEventArgs :
SocketAsyncEventArgs.Buffer oppure SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count se SocketAsyncEventArgs.Buffer è impostato
SocketAsyncEventArgs.Offset se SocketAsyncEventArgs.Buffer è impostato
Il chiamante può impostare la SocketAsyncEventArgs.UserToken proprietà su qualsiasi oggetto stato utente desiderato prima di chiamare il SendAsync 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.
Il SendAsync metodo genererà un'eccezione se non si chiama Acceptprima , AcceptAsyncBeginAcceptBeginConnect, Connect, o .ConnectAsync
La chiamata al SendAsync metodo consente di inviare dati all'interno di un thread di esecuzione separato.
Per i socket orientati ai messaggi, non superare le dimensioni massime del messaggio del provider di servizi Windows Sockets sottostante. Se i dati sono troppo lunghi per passare in modo atomico tramite il provider di servizi sottostante, non vengono trasmessi dati e il SendAsync metodo genera un SocketException oggetto con l'oggetto SocketAsyncEventArgs.SocketError impostato sul codice di errore WSAEMSGSIZE di Winsock nativo (10040).
Si noti che il completamento corretto del SendAsync metodo non indica che i dati sono stati recapitati correttamente.