Socket.ConnectAsync 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.
Avvia una richiesta asincrona per una connessione a un host remoto.
Overload
| Nome | Descrizione |
|---|---|
| ConnectAsync(SocketAsyncEventArgs) |
Avvia una richiesta asincrona per una connessione a un host remoto. |
| ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) |
Avvia una richiesta asincrona per una connessione a un host remoto. |
ConnectAsync(SocketAsyncEventArgs)
Avvia una richiesta asincrona per una connessione a un host remoto.
public:
bool ConnectAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ConnectAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ConnectAsync (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
Un argomento non è valido. Questa eccezione si verifica se vengono specificati più buffer, la BufferList proprietà non è Null.
Il e parametro non può essere Null e non RemoteEndPoint può essere null.
è Socket in ascolto o un'operazione socket già in corso utilizzando l'oggetto SocketAsyncEventArgs specificato nel e parametro .
Si è verificato un errore durante il tentativo di accesso al socket.
L'endpoint locale e l'oggetto RemoteEndPoint non sono la stessa famiglia di indirizzi.
L'oggetto Socket è stato chiuso.
Un chiamante superiore nello stack di chiamate non dispone dell'autorizzazione per l'operazione richiesta.
Commenti
Se si usa un protocollo orientato alla connessione, il ConnectAsync metodo avvia una richiesta asincrona per una connessione all'host remoto. Se si usa un protocollo senza connessione, ConnectAsync stabilisce un host remoto predefinito.
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
Il chiamante deve impostare la SocketAsyncEventArgs.RemoteEndPoint proprietà sull'oggetto IPEndPoint dell'host remoto a cui connettersi.
Il chiamante può impostare la SocketAsyncEventArgs.UserToken proprietà su qualsiasi oggetto stato utente desiderato prima di chiamare il ConnectAsync 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 senza connessione, ad esempio UDP, non è necessario chiamare ConnectAsync prima di inviare e ricevere dati. È possibile usare SendToAsync e ReceiveFromAsync per comunicare con un host remoto. Se si chiama ConnectAsync, tutti i datagrammi che arrivano da un indirizzo diverso dal valore predefinito specificato verranno eliminati. Se si vuole modificare l'host remoto predefinito, chiamare di nuovo il ConnectAsync metodo con l'endpoint desiderato.
Se si desidera impostare l'host remoto predefinito su un indirizzo di trasmissione, è prima necessario chiamare SetSocketOption e impostare Broadcast su true. Se questa operazione non viene eseguita, il ConnectAsync metodo genererà un'eccezione SocketException.
Sono necessarie le proprietà e gli eventi seguenti sull'oggetto System.Net.Sockets.SocketAsyncEventArgs :
Facoltativamente, è possibile specificare un buffer che verrà inviato in modo atomico sul socket dopo che il ConnectAsync metodo ha esito positivo. In questo caso, la SocketAsyncEventArgs.Buffer proprietà deve essere impostata sul buffer contenente i dati da inviare e la SocketAsyncEventArgs.Count proprietà deve essere impostata sul numero di byte di dati da inviare dal buffer. Una volta stabilita una connessione, questo buffer di dati viene inviato.
Se si usa un protocollo orientato alla connessione e non si chiama prima di chiamare BindConnectAsync, il provider di servizi sottostante assegnerà l'indirizzo di rete e il numero di porta più appropriati.
Se si usa un protocollo senza connessione, il provider di servizi non assegnerà un indirizzo IP di rete locale e un numero di porta finché non si chiamano i SendAsync metodi o ReceiveAsync .
Il ConnectAsync metodo genera un'eccezione NotSupportedException se la famiglia di indirizzi di Socket e SocketAsyncEventArgs.RemoteEndPoint non è la stessa famiglia di indirizzi.
Note
Se si riceve un oggetto SocketException quando si chiama questo metodo, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Vedi anche
Si applica a
ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)
Avvia una richiesta asincrona per una connessione a un host remoto.
public:
static bool ConnectAsync(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType, System::Net::Sockets::SocketAsyncEventArgs ^ e);
public static bool ConnectAsync(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, System.Net.Sockets.SocketAsyncEventArgs e);
static member ConnectAsync : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType * System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Shared Function ConnectAsync (socketType As SocketType, protocolType As ProtocolType, e As SocketAsyncEventArgs) As Boolean
Parametri
- socketType
- SocketType
Uno dei SocketType valori.
- protocolType
- ProtocolType
Uno dei ProtocolType valori.
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
Un argomento non è valido. Questa eccezione si verifica se vengono specificati più buffer, la BufferList proprietà non è Null.
Il e parametro non può essere Null e non RemoteEndPoint può essere null.
è Socket in ascolto o un'operazione socket già in corso utilizzando l'oggetto SocketAsyncEventArgs specificato nel e parametro .
Si è verificato un errore durante il tentativo di accesso al socket.
L'endpoint locale e l'oggetto RemoteEndPoint non sono la stessa famiglia di indirizzi.
L'oggetto Socket è stato chiuso.
Un chiamante superiore nello stack di chiamate non dispone dell'autorizzazione per l'operazione richiesta.
Commenti
Se si usa un protocollo orientato alla connessione, il metodo M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs) avvia una richiesta asincrona per una connessione all'host remoto. Se si usa un protocollo senza connessione, ConnectAsync stabilisce un host remoto predefinito specificato dai socketType parametri e protocolType .
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
Il chiamante deve impostare la SocketAsyncEventArgs.RemoteEndPoint proprietà sull'oggetto IPEndPoint dell'host remoto a cui connettersi.
Il chiamante può impostare la SocketAsyncEventArgs.UserToken proprietà su qualsiasi oggetto stato utente desiderato prima di chiamare il ConnectAsync 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 senza connessione, ad esempio UDP, non è necessario chiamare ConnectAsync prima di inviare e ricevere dati. È possibile usare SendToAsync e ReceiveFromAsync per comunicare con un host remoto. Se si chiama ConnectAsync, tutti i datagrammi che arrivano da un indirizzo diverso dal valore predefinito specificato verranno eliminati. Se si vuole modificare l'host remoto predefinito, chiamare di nuovo il ConnectAsync metodo con l'endpoint desiderato.
Se si desidera impostare l'host remoto predefinito su un indirizzo di trasmissione, è prima necessario chiamare SetSocketOption e impostare Broadcast su true. Se questa operazione non viene eseguita, il ConnectAsync metodo genererà un'eccezione SocketException.
Sono necessarie le proprietà e gli eventi seguenti sull'oggetto System.Net.Sockets.SocketAsyncEventArgs :
Facoltativamente, è possibile specificare un buffer che verrà inviato in modo atomico sul socket dopo che il ConnectAsync metodo ha esito positivo. In questo caso, la SocketAsyncEventArgs.Buffer proprietà deve essere impostata sul buffer contenente i dati da inviare e la SocketAsyncEventArgs.Count proprietà deve essere impostata sul numero di byte di dati da inviare dal buffer. Una volta stabilita una connessione, questo buffer di dati viene inviato.
Se si usa un protocollo orientato alla connessione e non si chiama prima di chiamare BindConnectAsync, il provider di servizi sottostante assegnerà l'indirizzo di rete e il numero di porta più appropriati.
Se si usa un protocollo senza connessione, il provider di servizi non assegnerà un indirizzo IP di rete locale e un numero di porta finché non si chiamano i SendAsync metodi o ReceiveAsync .
Il ConnectAsync metodo genera un'eccezione NotSupportedException se la famiglia di indirizzi di Socket e SocketAsyncEventArgs.RemoteEndPoint non è la stessa famiglia di indirizzi.
Note
Se si riceve un oggetto SocketException quando si chiama questo metodo, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.