Compartir a través de


DatagramSocket.ConnectAsync Método

Definición

Sobrecargas

ConnectAsync(EndpointPair)

Inicia una operación de conexión en un DatagramSocket en un destino de red remota especificado como un objeto EndpointPair .

ConnectAsync(HostName, String)

Inicia una operación de conexión en un DatagramSocket en un destino remoto especificado por un nombre de host remoto y un nombre de servicio remoto.

ConnectAsync(EndpointPair)

Inicia una operación de conexión en un DatagramSocket en un destino de red remota especificado como un 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

Objeto EndpointPair que especifica el nombre de host local o la dirección IP, el nombre del servicio local o el puerto UDP, el nombre de host remoto o la dirección IP remota, y el nombre del servicio remoto o el puerto UDP remoto para el destino de red remota.

Devoluciones

Una operación de conexión asincrónica en un objeto DatagramSocket .

Atributos

Requisitos de Windows

Características de aplicaciones
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Comentarios

Este método ConnectAsync(EndPointPair) en un DatagramSocket se usa para definir el punto de conexión local y remoto donde se enviarán los datagramas al usar la propiedad OutputStream . Este método también restringe las direcciones IP remotas de los paquetes que se aceptarán en el nombre de host remoto en el parámetro endpointPair . Solo los paquetes entrantes que coincidan con el punto de conexión remoto en el parámetro endpointPair desencadenarán el evento MessageReceived en datagramSocket.

La aplicación puede enviar posteriormente datos de red al destino de red remoto llamando al método WriteAsync en la propiedad OutputStream del datagramSocket o pasando OutputStream a un objeto DataWriter y llamando a métodos del objeto DataWriter .

La propiedad RemoteHostName del endpointPair pasado en el parámetro endpointPair puede contener el nombre de host o la dirección IP del destino remoto. La propiedad RemoteServiceName del endpointPair pasado en el parámetro endpointPair puede contener el nombre del servicio o un puerto UDP del destino remoto. Si la propiedad RemoteHostName contiene un nombre de host, el método ConnectAsync(EndPointPair) resolverá el nombre de host remoto en una dirección IP. Si la propiedad RemoteServiceName del EndpointPair contiene un nombre de servicio, el método ConnectAsync(EndPointPair) resolverá el nombre del servicio remoto en un número de puerto UDP.

Las cadenas de nombre de servicio que se reconocen de forma predeterminada son los nombres de servicio enumerados en el archivo %windir%\System32\drivers\etc\services en el equipo local. Cualquier otro valor de nombre de servicio da como resultado una consulta de servicio de nombres a los servidores del sistema de nombres de dominio (DNS) para los registros SRV de DNS.

Se deben proporcionar las propiedades RemoteHostName y RemoteServiceName . Si RemoteHostName es null o si RemoteServiceName es null o una cadena vacía, se producirá un error.

Si el objeto EndpointPair pasado en el parámetro endpointPair contiene una propiedad LocalHostName nula, el sistema proporcionará la dirección IP local que se usará. Si el objeto EndpointPair pasado en el parámetro endpointPair contiene una propiedad LocalServiceName vacía, el sistema proporcionará el puerto UDP local que se usará.

Hay dos maneras de usar datagramSocket para enviar datagramas UDP a un destino de red remota:

Los métodos GetOutputStreamAsync permiten a una aplicación enviar datagramas UDP mediante un objeto DatagramSocket a varios destinos de red. Cada vez que se llama al método GetOutputStreamAsync , la aplicación puede establecer valores diferentes para los parámetros remoteHostName y remoteServiceName .

Para recibir datos de un único punto de conexión remoto en el objeto DatagramSocket , una aplicación debe asignar el evento MessageReceived a un controlador de eventos y, a continuación, llamar al método ConnectAsync(EndPointPair) con el parámetro endpointPair establecido en la información del punto de conexión remoto. El controlador de eventos MessageReceived debe establecerse antes de cualquier operación de enlace o conexión; de lo contrario, se producirá un error.

El orden típico de las operaciones es el siguiente:

  • Cree datagramSocket.
  • Utilice la propiedad Control en DatagramSocket para recuperar un objeto DatagramSocketControl y establecer los controles avanzados. Normalmente, la mayoría de las aplicaciones no necesitan este paso.
  • Asigne el evento MessageReceived a un controlador de eventos.
  • Llame al método ConnectAsync para conectarse al punto de conexión remoto.
  • Use la propiedad OutputStream en DatagramSocket con un objeto DataWriter para enviar mensajes al punto de conexión remoto.
  • El controlador de eventos MessageReceived se invocará cada vez que llegue un mensaje desde el punto de conexión remoto. Los métodos GetOutputStreamAsync también difieren del método ConnectAsync cuando una aplicación usa el método BindEndpointAsync o BindServiceNameAsync para enlazar con un nombre de servicio local o un puerto UDP. Con los métodos GetOutputStreamAsync , la aplicación recibirá paquetes de cualquier destino remoto enviado al nombre del servicio local o al puerto UDP. Con los métodos ConnectAsync, la aplicación solo recibirá paquetes del destino remoto pasados como parámetros a los métodos ConnectAsync.

El método BindServiceNameAsync(String, NetworkAdapter) se puede usar para especificar un adaptador de red antes de llamar al método ConnectAsync(EndPointPair). El adaptador especificado se usa para la operación de enlace. Si después de llamar al método BindServiceNameAsync(String, NetworkAdapter) y el parámetro endpointPair pasado a ConnectAsync(EndPointPair) especifica un localHostName, se producirá un error en el método ConnectAsync(EndPointPair).

El método ConnectAsync solo funciona para las direcciones IP de unidifusión. Al intentar llamar al método ConnectAsync con una dirección IP de multidifusión en la dirección IP remota establecida en el parámetro endpointPair , la operación asincrónica se completará con un error. Al pasar el error al método SocketError.GetStatus , el valor devuelto será SocketErrorStatus.HostNotFound.

El uso de ConnectAsync con una dirección IP de difusión como 255.255.255.255 se conectará, pero solo se difundirá a través del primer adaptador de red encontrado. Para difundir en todos los adaptadores disponibles, use GetOutputStreamAsync.

Consulte también

Se aplica a

ConnectAsync(HostName, String)

Inicia una operación de conexión en un DatagramSocket en un destino remoto especificado por un nombre de host remoto y un nombre de servicio 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

Nombre de host o dirección IP del destino de red remota.

remoteServiceName
String

Platform::String

winrt::hstring

Nombre del servicio o puerto UDP del destino de red remota.

Devoluciones

Una operación de conexión asincrónica en un objeto DatagramSocket .

Atributos

Requisitos de Windows

Características de aplicaciones
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Comentarios

El método ConnectAsync en un DatagramSocket se usa para definir el nombre de host remoto o la dirección IP remota y el nombre del servicio remoto o el número de puerto UDP donde se enviarán datagramas al usar la propiedad OutputStream . Este método también restringe las direcciones IP remotas de los paquetes que se aceptarán en el parámetro remoteHostName . Solo los paquetes entrantes que coincidan con el parámetro remoteHostName desencadenarán el evento MessageReceived en datagramSocket.

La aplicación puede enviar posteriormente datos de red al destino de red remoto llamando al método WriteAsync en la propiedad OutputStream del datagramSocket o pasando OutputStream a un objeto DataWriter y llamando a métodos del objeto DataWriter .

El parámetro remoteHostName puede contener el nombre de host o la dirección IP del destino remoto. El parámetro remoteServiceName puede contener el nombre del servicio o un puerto UDP del destino remoto. Si el parámetro remoteHostName contiene un nombre de host, el método ConnectAsync resolverá el nombre de host remoto en una dirección IP. Si el parámetro remoteServiceName contiene un nombre de servicio, el método ConnectAsync resolverá el nombre del servicio remoto en un número de puerto UDP.

Las cadenas de nombre de servicio reconocidas de forma predeterminada por el parámetro remoteServiceName son los nombres de servicio enumerados en el archivo %windir%\System32\drivers\etc\services del equipo local. Cualquier otro valor de nombre de servicio da como resultado una consulta de servicio de nombres a los servidores del sistema de nombres de dominio (DNS) para los registros SRV de DNS.

Se deben proporcionar los parámetros remoteHostName y remoteServiceName . Si remoteHostName es null o remoteServiceName es null o una cadena vacía, se producirá un error.

Hay dos maneras de usar datagramSocket para enviar datagramas UDP a un destino de red remota:

Los métodos GetOutputStreamAsync permiten a una aplicación enviar datagramas UDP mediante un objeto DatagramSocket a varios destinos de red. Cada vez que se llama al método GetOutputStreamAsync , la aplicación puede establecer valores diferentes para los parámetros remoteHostName y remoteServiceName .

Para recibir datos de un único punto de conexión en el objeto DatagramSocket , una aplicación debe asignar el evento MessageReceived a un controlador de eventos y, a continuación, llamar al método ConnectAsync con los parámetros remoteHostName y remoteServiceName establecidos en la información del punto de conexión remoto. El controlador de eventos MessageReceived debe establecerse antes de cualquier operación de enlace o conexión; de lo contrario, se producirá un error.

El orden típico de las operaciones es el siguiente:

  1. Cree datagramSocket.
  2. Utilice la propiedad Control en DatagramSocket para recuperar un objeto DatagramSocketControl y establecer los controles avanzados. Normalmente, la mayoría de las aplicaciones no necesitan este paso.
  3. Asigne el evento MessageReceived a un controlador de eventos.
  4. Llame al método ConnectAsync para conectarse al punto de conexión remoto.
  5. Use la propiedad OutputStream en DatagramSocket con un objeto DataWriter para enviar mensajes al punto de conexión remoto.
  6. El controlador de eventos MessageReceived se invocará cada vez que llegue un mensaje desde el punto de conexión remoto. Los métodos GetOutputStreamAsync también difieren del método ConnectAsync cuando una aplicación usa el método BindEndpointAsync o BindServiceNameAsync para enlazar con un nombre de servicio local o un puerto UDP. Con los métodos GetOutputStreamAsync , la aplicación recibirá paquetes de cualquier destino remoto enviado al nombre del servicio local o al puerto UDP. Con los métodos ConnectAsync , la aplicación solo recibirá paquetes del destino remoto pasados como parámetros a los métodos ConnectAsync .

El método ConnectAsync solo funciona para las direcciones IP de unidifusión. Al intentar llamar al método ConnectAsync con una dirección IP de multidifusión para el parámetro remoteHostName , la operación asincrónica se completará con un error. Al pasar el error al método SocketError.GetStatus , el valor devuelto será SocketErrorStatus.HostNotFound.

El uso de ConnectAsync con una dirección IP de difusión como 255.255.255.255 se conectará, pero solo se difundirá a través del primer adaptador de red encontrado. Para difundir en todos los adaptadores disponibles, use GetOutputStreamAsync.

Consulte también

Se aplica a