Lingua

DatagramSocket.ConnectAsync Metodo

Definizione

Overload

Nome Descrizione
ConnectAsync(EndpointPair)

Avvia un'operazione di connessione in un oggetto DatagramSocket a una destinazione di rete remota specificata come oggetto EndpointPair .

ConnectAsync(HostName, String)

Avvia un'operazione di connessione in un oggetto DatagramSocket a una destinazione remota specificata da un nome host remoto e da un nome di servizio remoto.

ConnectAsync(EndpointPair)

Avvia un'operazione di connessione in un oggetto DatagramSocket a una destinazione di rete remota specificata come oggetto EndpointPair .

public:
 virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair);
function connectAsync(endpointPair)
Public Function ConnectAsync (endpointPair As EndpointPair) As IAsyncAction

Parametri

endpointPair
EndpointPair

Oggetto EndpointPair che specifica il nome host locale o l'indirizzo IP, il nome del servizio locale o la porta UDP, il nome host remoto o l'indirizzo IP remoto e il nome del servizio remoto o la porta UDP remota per la destinazione di rete remota.

Valori restituiti

Operazione di connessione asincrona in un oggetto DatagramSocket .

Attributi

Requisiti Windows

Requisiti Descrizione
Funzionalità dell'app
internetClientServer privateNetworkClientServer

Commenti

Questo metodo ConnectAsync(EndPointPair) in un oggetto DatagramSocket viene usato per definire l'endpoint locale e remoto in cui i datagrammi verranno inviati quando si usa la proprietà OutputStream . Questo metodo limita anche gli indirizzi IP remoti dei pacchetti che verranno accettati nel nome host remoto nel parametro endpointPair . Solo i pacchetti in ingresso che corrispondono all'endpoint remoto nel parametro endpointPair attiveranno l'evento MessageReceived in DatagramSocket.

L'app può successivamente inviare dati di rete alla destinazione di rete remota chiamando il metodo WriteAsync sulla proprietà OutputStream di DatagramSocket o passando OutputStream a un oggetto DataWriter e chiamando i metodi dell'oggetto DataWriter .

La proprietà RemoteHostNamedell'endpointPair passata nel parametro endpointPair può contenere il nome host o l'indirizzo IP della destinazione remota. La proprietà RemoteServiceNamedell'endpointPair passata nel parametro endpointPair può contenere il nome del servizio o una porta UDP della destinazione remota. Se la proprietà RemoteHostName contiene un nome host, il metodo ConnectAsync(EndPointPair) risolverà il nome host remoto in un indirizzo IP. Se la proprietà RemoteServiceName di EndpointPair contiene un nome di servizio, il metodo ConnectAsync(EndPointPair) risolverà il nome del servizio remoto in un numero di porta UDP.

Le stringhe del nome del servizio riconosciute per impostazione predefinita sono i nomi dei servizi elencati nel file %windir%\System32\drivers\etc\services nel computer locale. Qualsiasi altro valore del nome del servizio restituisce una query del servizio dei nomi ai server DNS (Domain Name System) per i record SRV DNS.

È necessario specificare le proprietà RemoteHostName e RemoteServiceName . Se RemoteHostName è null o se RemoteServiceName è null o una stringa vuota, si verificherà un errore.

Se l'oggetto EndpointPair passato nel parametro endpointPair contiene una proprietà LocalHostName null, il sistema fornirà l'indirizzo IP locale che verrà usato. Se l'oggetto EndpointPair passato nel parametro endpointPair contiene una proprietà LocalServiceName vuota, il sistema fornirà la porta UDP locale che verrà usata.

Esistono due modi per usare un DatagramSocket per inviare datagrammi UDP a una destinazione di rete remota:

I metodi GetOutputStreamAsync consentono a un'app di inviare datagrammi UDP usando un oggetto DatagramSocket a più destinazioni di rete. Ogni volta che viene chiamato il metodo GetOutputStreamAsync , l'app può impostare valori diversi per i parametri remoteHostName e remoteServiceName .

Per ricevere dati da un singolo endpoint remoto nell'oggetto DatagramSocket , un'app deve assegnare l'evento MessageReceived a un gestore eventi e quindi chiamare il metodo ConnectAsync(EndPointPair) con il parametro endpointPair impostato sulle informazioni sull'endpoint remoto. Il gestore eventi MessageReceived deve essere impostato prima di qualsiasi operazione di associazione o connessione. In caso contrario, si verificherà un errore.

L'ordine tipico delle operazioni è il seguente:

  • Creare datagramSocket.
  • Utilizzare la proprietà Control in DatagramSocket per recuperare un oggetto DatagramSocketControl e impostare eventuali controlli avanzati. Questo passaggio non è in genere necessario per la maggior parte delle app.
  • Assegnare l'evento MessageReceived a un gestore eventi.
  • Chiamare il metodo ConnectAsync per connettersi all'endpoint remoto.
  • Utilizzare la proprietà OutputStream in DatagramSocket con un oggetto DataWriter per inviare messaggi all'endpoint remoto.
  • Il gestore eventi MessageReceived verrà richiamato ogni volta che arriva un messaggio dall'endpoint remoto. I metodi GetOutputStreamAsync differiscono anche dal metodo ConnectAsync quando un'app usa il metodo BindEndpointAsync o BindServiceNameAsync per eseguire l'associazione a un nome di servizio locale o a una porta UDP. Con i metodi GetOutputStreamAsync , l'app riceverà pacchetti da qualsiasi destinazione remota inviata al nome del servizio locale o alla porta UDP. Con i metodi ConnectAsync, l'app riceverà solo pacchetti dalla destinazione remota passata come parametri ai metodi ConnectAsync.

Il metodo BindServiceNameAsync(String, NetworkAdapter) può essere utilizzato per specificare una scheda di rete prima di chiamare il metodo ConnectAsync(EndPointPair). L'adattatore specificato viene utilizzato per l'operazione di associazione. Se dopo aver chiamato il metodo BindServiceNameAsync(String, NetworkAdapter) e il parametro endpointPair passato a ConnectAsync(EndPointPair) specifica un LocalHostName, il metodo ConnectAsync(EndPointPair) avrà esito negativo.

Il metodo ConnectAsync funziona solo per gli indirizzi IP unicast. Quando si tenta di chiamare il metodo ConnectAsync con un indirizzo IP multicast nell'indirizzo IP remoto impostato nel parametro endpointPair , l'operazione asincrona verrà completata con un errore. Quando si passa l'errore al metodo SocketError.GetStatus , il valore restituito sarà SocketErrorStatus.HostNotFound.

L'uso di ConnectAsync con un indirizzo IP broadcast, ad esempio 255.255.255.255, si connetterà, ma trasmetterà solo tramite la prima scheda di rete trovata. Per trasmettere su tutte le schede disponibili, usare GetOutputStreamAsync.

Vedi anche

Si applica a

ConnectAsync(HostName, String)

Avvia un'operazione di connessione in un oggetto DatagramSocket a una destinazione remota specificata da un nome host remoto e da un nome di servizio remoto.

public:
 virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("ConnectAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName);
function connectAsync(remoteHostName, remoteServiceName)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncAction

Parametri

remoteHostName
HostName

Nome host o indirizzo IP della destinazione di rete remota.

remoteServiceName
String

Platform::String

winrt::hstring

Nome del servizio o porta UDP della destinazione di rete remota.

Valori restituiti

Operazione di connessione asincrona in un oggetto DatagramSocket .

Attributi

Requisiti Windows

Requisiti Descrizione
Funzionalità dell'app
internetClientServer privateNetworkClientServer

Commenti

Il metodo ConnectAsync in un oggetto DatagramSocket viene usato per definire il nome host remoto o l'indirizzo IP remoto e il nome del servizio remoto o il numero di porta UDP in cui i datagrammi verranno inviati quando si usa la proprietà OutputStream . Questo metodo limita anche gli indirizzi IP remoti dei pacchetti che verranno accettati nel parametro remoteHostName . Solo i pacchetti in ingresso che corrispondono al parametro remoteHostName attiveranno l'evento MessageReceived in DatagramSocket.

L'app può successivamente inviare dati di rete alla destinazione di rete remota chiamando il metodo WriteAsync sulla proprietà OutputStream di DatagramSocket o passando OutputStream a un oggetto DataWriter e chiamando i metodi dell'oggetto DataWriter .

Il parametro remoteHostName può contenere il nome host o l'indirizzo IP della destinazione remota. Il parametro remoteServiceName può contenere il nome del servizio o una porta UDP della destinazione remota. Se il parametro remoteHostName contiene un nome host, il metodo ConnectAsync risolverà il nome host remoto in un indirizzo IP. Se il parametro remoteServiceName contiene un nome di servizio, il metodo ConnectAsync risolverà il nome del servizio remoto in un numero di porta UDP.

Le stringhe del nome del servizio riconosciute per impostazione predefinita dal parametro remoteServiceName sono i nomi dei servizi elencati nel file %windir%\System32\drivers\etc\services nel computer locale. Qualsiasi altro valore del nome del servizio restituisce una query del servizio dei nomi ai server DNS (Domain Name System) per i record SRV DNS.

È necessario specificare i parametri remoteHostName e remoteServiceName . Se remoteHostName è null o remoteServiceName è null o una stringa vuota, si verificherà un errore.

Esistono due modi per usare un DatagramSocket per inviare datagrammi UDP a una destinazione di rete remota:

I metodi GetOutputStreamAsync consentono a un'app di inviare datagrammi UDP usando un oggetto DatagramSocket a più destinazioni di rete. Ogni volta che viene chiamato il metodo GetOutputStreamAsync , l'app può impostare valori diversi per i parametri remoteHostName e remoteServiceName .

Per ricevere dati da un singolo endpoint nell'oggetto DatagramSocket , un'app deve assegnare l'evento MessageReceived a un gestore eventi e quindi chiamare il metodo ConnectAsync con i parametri remoteHostName e remoteServiceName impostati sulle informazioni sull'endpoint remoto. Il gestore eventi MessageReceived deve essere impostato prima di qualsiasi operazione di associazione o connessione. In caso contrario, si verificherà un errore.

L'ordine tipico delle operazioni è il seguente:

  1. Creare datagramSocket.
  2. Utilizzare la proprietà Control in DatagramSocket per recuperare un oggetto DatagramSocketControl e impostare eventuali controlli avanzati. Questo passaggio non è in genere necessario per la maggior parte delle app.
  3. Assegnare l'evento MessageReceived a un gestore eventi.
  4. Chiamare il metodo ConnectAsync per connettersi all'endpoint remoto.
  5. Utilizzare la proprietà OutputStream in DatagramSocket con un oggetto DataWriter per inviare messaggi all'endpoint remoto.
  6. Il gestore eventi MessageReceived verrà richiamato ogni volta che arriva un messaggio dall'endpoint remoto. I metodi GetOutputStreamAsync differiscono anche dal metodo ConnectAsync quando un'app usa il metodo BindEndpointAsync o BindServiceNameAsync per eseguire l'associazione a un nome di servizio locale o a una porta UDP. Con i metodi GetOutputStreamAsync , l'app riceverà pacchetti da qualsiasi destinazione remota inviata al nome del servizio locale o alla porta UDP. Con i metodi ConnectAsync , l'app riceverà solo pacchetti dalla destinazione remota passata come parametri ai metodi ConnectAsync .

Il metodo ConnectAsync funziona solo per gli indirizzi IP unicast. Quando si tenta di chiamare il metodo ConnectAsync con un indirizzo IP multicast per il parametro remoteHostName , l'operazione asincrona verrà completata con un errore. Quando si passa l'errore al metodo SocketError.GetStatus , il valore restituito sarà SocketErrorStatus.HostNotFound.

L'uso di ConnectAsync con un indirizzo IP broadcast, ad esempio 255.255.255.255, si connetterà, ma trasmetterà solo tramite la prima scheda di rete trovata. Per trasmettere su tutte le schede disponibili, usare GetOutputStreamAsync.

Vedi anche

Si applica a