Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Socket.ConnectAsync (SocketType, ProtocolType, SocketAsyncEventArgs)

 

Data di pubblicazione: ottobre 2016

Avvia una richiesta asincrona per una connessione a un host remoto.

Spazio dei nomi:   System.Net.Sockets
Assembly:  System (in System.dll)

public static bool ConnectAsync(
	SocketType socketType,
	ProtocolType protocolType,
	SocketAsyncEventArgs e
)

Parametri

socketType
Type: System.Net.Sockets.SocketType

Uno dei valori di SocketType.

protocolType
Type: System.Net.Sockets.ProtocolType

Uno dei valori di ProtocolType.

e
Type: System.Net.Sockets.SocketAsyncEventArgs

Il System.Net.Sockets.SocketAsyncEventArgs oggetto da utilizzare per questa operazione socket asincrona.

Valore restituito

Type: System.Boolean

Restituisce true Se l'operazione dei / o è in sospeso. Il SocketAsyncEventArgs.Completed evento il e parametro, verrà generato al completamento dell'operazione.

Restituisce false Se l'operazione dei / o è stata completata in modo sincrono. In questo caso, il SocketAsyncEventArgs.Completed evento il e parametro non verrà generato e e oggetto passato come parametro può essere esaminato immediatamente dopo la chiamata al metodo restituisce per recuperare il risultato dell'operazione.

Exception Condition
ArgumentException

Un argomento non è valido. Questa eccezione si verifica se sono specificati più buffer, il SocketAsyncEventArgs.BufferList proprietà non è null.

ArgumentNullException

Il e parametro non può essere null e il SocketAsyncEventArgs.RemoteEndPoint non può essere null.

InvalidOperationException

Il Socket è in attesa o un'operazione socket era già in corso mediante la System.Net.Sockets.SocketAsyncEventArgs l'oggetto specificato nel e parametro.

SocketException

Si è verificato un errore durante il tentativo di accesso al socket. Per altre informazioni, vedere la sezione Osservazioni.

NotSupportedException

Windows XP o versione successiva è richiesto per questo metodo. Questa eccezione si verifica anche se l'endpoint locale e il SocketAsyncEventArgs.RemoteEndPoint non sono della stessa famiglia di indirizzi.

ObjectDisposedException

L'oggetto Socket è stato chiuso.

SecurityException

Un chiamante di livello superiore nello stack di chiamate non ha l'autorizzazione per l'operazione richiesta.

Se si utilizza un protocollo orientato alla connessione, il metodo ProtocolType avvia una richiesta asincrona per una connessione all'host remoto. Se si utilizza un protocollo senza connessione, ConnectAsync stabilisce un host remoto predefinito specificato per il socketType e protocolType i parametri.

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

Il chiamante deve impostare il SocketAsyncEventArgs.RemoteEndPoint proprietà per il IPEndPoint dell'host remoto a cui connettersi.

Il chiamante può impostare il SocketAsyncEventArgs.UserToken proprietà su qualsiasi oggetto di stato utente desiderato prima di chiamare il ConnectAsync (metodo), in modo che le informazioni possano essere recuperate nel metodo di callback. Se il callback richiede più informazioni rispetto a un singolo oggetto, una piccola classe può essere creata per contenere altre informazioni di stato necessario come membri.

Se si utilizza un protocollo senza connessione, ad esempio UDP, non è necessario chiamare ConnectAsync prima di inviare e ricevere dati. È possibile utilizzare SendToAsync e ReceiveFromAsync per comunicare con un host remoto. Se si chiama ConnectAsync, verranno eliminati tutti i datagrammi provenienti da un indirizzo diverso da quello predefinito specificato. Se si desidera modificare l'host remoto predefinito, chiamare il ConnectAsync metodo nuovamente con l'endpoint desiderato.

Se si desidera impostare l'host remoto predefinito per un indirizzo di broadcast, è necessario chiamare prima SetSocketOption e impostare Broadcast su true. Se in caso contrario, il ConnectAsync metodo genererà un SocketException.

La seguente proprietà ed eventi di System.Net.Sockets.SocketAsyncEventArgs oggetto sono necessari:

Facoltativamente, fornire un buffer da quale verrà inviato in modo atomico su socket dopo che il ConnectAsync metodo ha esito positivo. In questo caso, il SocketAsyncEventArgs.Buffer proprietà deve essere impostato sul buffer contenente i dati per l'invio e la SocketAsyncEventArgs.Count proprietà deve essere impostata per il numero di byte di dati da inviare dal buffer. Una volta stabilita una connessione, viene inviato il buffer di dati.

Se si utilizza un protocollo orientato alla connessione e non chiamare Bind prima di chiamare ConnectAsync, il provider del servizio sottostante assegnerà il numero di porta e indirizzo di rete locale più appropriato.

Se si utilizza un protocollo senza connessione, il provider di servizi non assegnerà un numero di porta e indirizzo IP locale rete finché non si chiama il SendAsync o ReceiveAsync metodi.

Il ConnectAsync genererà NotSupportedException Se la famiglia di indirizzi della Socket e SocketAsyncEventArgs.RemoteEndPoint non sono della stessa famiglia di indirizzi.

System_CAPS_noteNota

Se si riceve un SocketException quando si chiama questo metodo, utilizzare il SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo avere ottenuto il codice, fare riferimento alla versione di Windows Sockets API errore codice documentazione 2 in MSDN library per una descrizione dettagliata dell'errore.

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 4.0
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.1
Torna all'inizio
Mostra: