Compartilhar via


DatagramSocket.ConnectAsync Método

Definição

Sobrecargas

ConnectAsync(EndpointPair)

Inicia uma operação de conexão em um DatagramSocket para um destino de rede remoto especificado como um objeto EndpointPair .

ConnectAsync(HostName, String)

Inicia uma operação de conexão em um DatagramSocket para um destino remoto especificado por um nome de host remoto e um nome de serviço remoto.

ConnectAsync(EndpointPair)

Inicia uma operação de conexão em um DatagramSocket para um destino de rede remoto especificado como um objeto 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

Parâmetros

endpointPair
EndpointPair

Um objeto EndpointPair que especifica o nome do host local ou endereço IP, o nome do serviço local ou a porta UDP, o nome do host remoto ou o endereço IP remoto e o nome do serviço remoto ou a porta UDP remota para o destino de rede remota.

Retornos

Uma operação de conexão assíncrona em um objeto DatagramSocket .

Atributos

Requisitos do Windows

Funcionalidades do aplicativo
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Comentários

Esse método ConnectAsync(EndPointPair) em um DatagramSocket é usado para definir o ponto de extremidade local e remoto para o qual os datagramas serão enviados ao usar a propriedade OutputStream . Esse método também restringe endereços IP remotos de pacotes que serão aceitos para o nome do host remoto no parâmetro endpointPair . Somente os pacotes de entrada que correspondem ao ponto de extremidade remoto no parâmetro endpointPair dispararão o evento MessageReceived no DatagramSocket.

Posteriormente, o aplicativo pode enviar dados de rede para o destino de rede remota chamando o método WriteAsync na propriedade OutputStream do DatagramSocket ou passando o OutputStream para um objeto DataWriter e chamando métodos do objeto DataWriter .

A propriedade RemoteHostName do EndpointPair passada no parâmetro endpointPair pode conter o nome do host ou o endereço IP do destino remoto. A propriedade RemoteServiceName do EndpointPair passada no parâmetro endpointPair pode conter o nome do serviço ou uma porta UDP do destino remoto. Se a propriedade RemoteHostName contiver um nome de host, o método ConnectAsync(EndPointPair) resolve o nome do host remoto para um endereço IP. Se a propriedade RemoteServiceName do EndpointPair contiver um nome de serviço, o método ConnectAsync(EndPointPair) resolve o nome do serviço remoto para um número de porta UDP.

As cadeias de caracteres de nome de serviço reconhecidas por padrão são os nomes de serviço listados no arquivo %windir%\System32\drivers\etc\services no computador local. Qualquer outro valor de nome de serviço resulta em uma consulta de serviço de nome para servidores DNS (sistema de nomes de domínio) para registros SRV DNS.

As propriedades RemoteHostName e RemoteServiceName devem ser fornecidas. Se RemoteHostName for nulo ou se RemoteServiceName for nulo ou uma cadeia de caracteres vazia, ocorrerá um erro.

Se o objeto EndpointPair passado no parâmetro endpointPair contiver uma propriedade LocalHostName nula, o sistema fornecerá o endereço IP local que será usado. Se o objeto EndpointPair passado no parâmetro endpointPair contiver uma propriedade LocalServiceName vazia, o sistema fornecerá a porta UDP local que será usada.

Há duas maneiras de usar um DatagramSocket para enviar datagramas UDP para um destino de rede remota:

Os métodos GetOutputStreamAsync permitem que um aplicativo envie datagramas UDP usando um objeto DatagramSocket para vários destinos de rede. Cada vez que o método GetOutputStreamAsync é chamado, o aplicativo pode definir valores diferentes para os parâmetros remoteHostName e remoteServiceName .

Para receber dados de um único ponto de extremidade remoto no objeto DatagramSocket , um aplicativo deve atribuir o evento MessageReceived a um manipulador de eventos e, em seguida, chamar o método ConnectAsync(EndPointPair) com o parâmetro endpointPair definido como as informações do ponto de extremidade remoto. O manipulador de eventos MessageReceived deve ser definido antes de qualquer operação de associação ou conexão; caso contrário, ocorrerá um erro.

A ordem típica das operações é a seguinte:

  • Crie o DatagramSocket.
  • Use a propriedade Control no DatagramSocket para recuperar um objeto DatagramSocketControl e definir quaisquer controles avançados. Essa etapa normalmente não é necessária para a maioria dos aplicativos.
  • Atribua o evento MessageReceived a um manipulador de eventos.
  • Chame o método ConnectAsync para se conectar ao ponto de extremidade remoto.
  • Use a propriedade OutputStream no DatagramSocket com um objeto DataWriter para enviar mensagens para o ponto de extremidade remoto.
  • O manipulador de eventos MessageReceived será invocado sempre que uma mensagem do ponto de extremidade remoto chegar. Os métodos GetOutputStreamAsync também diferem do método ConnectAsync quando um aplicativo usa o método BindEndpointAsync ou BindServiceNameAsync para associar a um nome de serviço local ou porta UDP. Com os métodos GetOutputStreamAsync , o aplicativo receberá pacotes de qualquer destino remoto enviado para o nome do serviço local ou porta UDP. Com os métodos ConnectAsync, o aplicativo receberá apenas pacotes do destino remoto passados como parâmetros para os métodos ConnectAsync.

O método BindServiceNameAsync(String, NetworkAdapter) pode ser usado para especificar um adaptador de rede antes de chamar o método ConnectAsync(EndPointPair). O adaptador especificado é usado para a operação de associação. Se depois de chamar o método BindServiceNameAsync(String, NetworkAdapter) e o parâmetro endpointPair passado para ConnectAsync(EndPointPair) especificar um LocalHostName, o método ConnectAsync(EndPointPair) falhará.

O método ConnectAsync só funciona para endereços IP unicast. Ao tentar chamar o método ConnectAsync com um endereço IP multicast no endereço IP remoto definido no parâmetro endpointPair , a operação assíncrona será concluída com um erro. Ao passar o erro para o método SocketError.GetStatus , o valor retornado será SocketErrorStatus.HostNotFound.

O uso de ConnectAsync com um endereço IP de difusão, como 255.255.255.255, se conectará, mas será transmitido apenas pelo primeiro adaptador de rede encontrado. Para transmitir em todos os adaptadores disponíveis, use GetOutputStreamAsync.

Confira também

Aplica-se a

ConnectAsync(HostName, String)

Inicia uma operação de conexão em um DatagramSocket para um destino remoto especificado por um nome de host remoto e um nome de serviço 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

Parâmetros

remoteHostName
HostName

O nome do host ou endereço IP do destino de rede remota.

remoteServiceName
String

Platform::String

winrt::hstring

O nome do serviço ou a porta UDP do destino de rede remota.

Retornos

Uma operação de conexão assíncrona em um objeto DatagramSocket .

Atributos

Requisitos do Windows

Funcionalidades do aplicativo
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Comentários

O método ConnectAsync em um DatagramSocket é usado para definir o nome do host remoto ou o endereço IP remoto e o nome do serviço remoto ou o número da porta UDP para onde os datagramas serão enviados ao usar a propriedade OutputStream . Esse método também restringe os endereços IP remotos de pacotes que serão aceitos para o parâmetro remoteHostName . Somente os pacotes de entrada que correspondem ao parâmetro remoteHostName dispararão o evento MessageReceived no DatagramSocket.

Posteriormente, o aplicativo pode enviar dados de rede para o destino de rede remota chamando o método WriteAsync na propriedade OutputStream do DatagramSocket ou passando o OutputStream para um objeto DataWriter e chamando métodos do objeto DataWriter .

O parâmetro remoteHostName pode conter o nome do host ou o endereço IP do destino remoto. O parâmetro remoteServiceName pode conter o nome do serviço ou uma porta UDP do destino remoto. Se o parâmetro remoteHostName contiver um nome de host, o método ConnectAsync resolve o nome do host remoto para um endereço IP. Se o parâmetro remoteServiceName contiver um nome de serviço, o método ConnectAsync resolve o nome do serviço remoto para um número de porta UDP.

As cadeias de caracteres de nome de serviço reconhecidas por padrão pelo parâmetro remoteServiceName são os nomes de serviço listados no arquivo %windir%\System32\drivers\etc\services no computador local. Qualquer outro valor de nome de serviço resulta em uma consulta de serviço de nome para servidores DNS (sistema de nomes de domínio) para registros SRV DNS.

Os parâmetros remoteHostName e remoteServiceName devem ser fornecidos. Se remoteHostName for nulo ou remoteServiceName for nulo ou uma cadeia de caracteres vazia, ocorrerá um erro.

Há duas maneiras de usar um DatagramSocket para enviar datagramas UDP para um destino de rede remota:

Os métodos GetOutputStreamAsync permitem que um aplicativo envie datagramas UDP usando um objeto DatagramSocket para vários destinos de rede. Cada vez que o método GetOutputStreamAsync é chamado, o aplicativo pode definir valores diferentes para os parâmetros remoteHostName e remoteServiceName .

Para receber dados de um único ponto de extremidade no objeto DatagramSocket , um aplicativo deve atribuir o evento MessageReceived a um manipulador de eventos e, em seguida, chamar o método ConnectAsync com os parâmetros remoteHostName e remoteServiceName definidos para as informações do ponto de extremidade remoto. O manipulador de eventos MessageReceived deve ser definido antes de qualquer operação de associação ou conexão; caso contrário, ocorrerá um erro.

A ordem típica das operações é a seguinte:

  1. Crie o DatagramSocket.
  2. Use a propriedade Control no DatagramSocket para recuperar um objeto DatagramSocketControl e definir quaisquer controles avançados. Essa etapa normalmente não é necessária para a maioria dos aplicativos.
  3. Atribua o evento MessageReceived a um manipulador de eventos.
  4. Chame o método ConnectAsync para se conectar ao ponto de extremidade remoto.
  5. Use a propriedade OutputStream no DatagramSocket com um objeto DataWriter para enviar mensagens para o ponto de extremidade remoto.
  6. O manipulador de eventos MessageReceived será invocado sempre que uma mensagem do ponto de extremidade remoto chegar. Os métodos GetOutputStreamAsync também diferem do método ConnectAsync quando um aplicativo usa o método BindEndpointAsync ou BindServiceNameAsync para associar a um nome de serviço local ou porta UDP. Com os métodos GetOutputStreamAsync , o aplicativo receberá pacotes de qualquer destino remoto enviado para o nome do serviço local ou porta UDP. Com os métodos ConnectAsync , o aplicativo receberá apenas pacotes do destino remoto passados como parâmetros para os métodos ConnectAsync .

O método ConnectAsync só funciona para endereços IP unicast. Ao tentar chamar o método ConnectAsync com um endereço IP multicast para o parâmetro remoteHostName , a operação assíncrona será concluída com um erro. Ao passar o erro para o método SocketError.GetStatus , o valor retornado será SocketErrorStatus.HostNotFound.

O uso de ConnectAsync com um endereço IP de difusão, como 255.255.255.255, se conectará, mas será transmitido apenas pelo primeiro adaptador de rede encontrado. Para transmitir em todos os adaptadores disponíveis, use GetOutputStreamAsync.

Confira também

Aplica-se a