Condividi tramite


DatagramSocket.ConnectAsync Metodo

Definizione

Overload

ConnectAsync(EndpointPair)

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

ConnectAsync(HostName, String)

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

ConnectAsync(EndpointPair)

Avvia un'operazione di connessione in un 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.

Restituisce

Operazione di connessione asincrona in un oggetto DatagramSocket .

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Commenti

Questo metodo ConnectAsync(EndPointPair) in un datagramSocket viene usato per definire l'endpoint locale e remoto in cui verranno inviati i datagrammi 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 nel DatagramSocket.

L'app può in seguito inviare dati di rete alla destinazione di rete remota chiamando il metodo WriteAsync nella proprietà OutputStream dell'oggetto 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à RemoteServiceNamedell'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 di servizio elencati nel file %windir%\System32\drivers\etc\services nel computer locale. Qualsiasi altro valore del nome del servizio genera una query del servizio 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à Null LocalHostName , 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, altrimenti si verificherà un errore.

L'ordine tipico delle operazioni è il seguente:

Il metodo BindServiceNameAsync(String, NetworkAdapter) può essere usato per specificare una scheda di rete prima di chiamare il metodo ConnectAsync(EndPointPair). L'adattatore specificato viene usato 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 di trasmissione, ad esempio 255.255.255.255, si connetterà, ma trasmetterà solo tramite la prima scheda di rete trovata. Per trasmettere in tutte le schede disponibili, usare GetOutputStreamAsync.

Vedi anche

Si applica a

ConnectAsync(HostName, String)

Avvia un'operazione di connessione in un datagramSocket a una destinazione remota specificata da un nome host remoto e un nome del 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.

Restituisce

Operazione di connessione asincrona in un oggetto DatagramSocket .

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Commenti

Il metodo ConnectAsync in un 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 verranno inviati i datagrammi 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 corrispondenti al parametro remoteHostName attiveranno l'evento MessageReceived nel DatagramSocket.

L'app può in seguito inviare dati di rete alla destinazione di rete remota chiamando il metodo WriteAsync nella proprietà OutputStream dell'oggetto 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 del 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 di servizio elencati nel file %windir%\System32\drivers\etc\services nel computer locale. Qualsiasi altro valore del nome del servizio genera una query del servizio 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, altrimenti si verificherà un errore.

L'ordine tipico delle operazioni è il seguente:

  1. Creare datagramSocket.
  2. Utilizzare la proprietà Control nel DatagramSocket per recuperare un oggetto DatagramSocketControl e impostare eventuali controlli avanzati. Questo passaggio non è normalmente necessario dalla 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 nel 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 del 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 di trasmissione, ad esempio 255.255.255.255, si connetterà, ma trasmetterà solo tramite la prima scheda di rete trovata. Per trasmettere in tutte le schede disponibili, usare GetOutputStreamAsync.

Vedi anche

Si applica a