DatagramSocket.GetOutputStreamAsync Método

Definición

Sobrecargas

GetOutputStreamAsync(EndpointPair)

Inicia una operación para obtener un IOutputStream en un destino de red remoto especificado por un objeto EndpointPair que, a continuación, se puede usar para enviar datos de red.

GetOutputStreamAsync(HostName, String)

Inicia una operación para obtener un IOutputStream en un destino remoto especificado por un nombre de host remoto y un nombre de servicio remoto que se puede usar para enviar datos de red.

GetOutputStreamAsync(EndpointPair)

Inicia una operación para obtener un IOutputStream en un destino de red remoto especificado por un objeto EndpointPair que, a continuación, se puede usar para enviar datos de red.

public:
 virtual IAsyncOperation<IOutputStream ^> ^ GetOutputStreamAsync(EndpointPair ^ endpointPair) = GetOutputStreamAsync;
/// [Windows.Foundation.Metadata.Overload("GetOutputStreamWithEndpointPairAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<IOutputStream> GetOutputStreamAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("GetOutputStreamWithEndpointPairAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<IOutputStream> GetOutputStreamAsync(EndpointPair endpointPair);
function getOutputStreamAsync(endpointPair)
Public Function GetOutputStreamAsync (endpointPair As EndpointPair) As IAsyncOperation(Of IOutputStream)

Parámetros

endpointPair
EndpointPair

Un par de puntos de conexión que representa el nombre de host local o la dirección IP local, el nombre del servicio local o el puerto UDP local, el nombre de host remoto o la dirección IP remota, y el nombre del servicio remoto o el puerto UDP remoto.

Devoluciones

IOutputStream que representa la operación asincrónica.

Atributos

Requisitos de Windows

Características de aplicaciones
ID_CAP_NETWORKING [Windows Phone]

Comentarios

El método GetOutputStreamAsync(EndpointPair) en datagramSocket se usa para iniciar una operación para obtener un IOutputStream en un destino de red remoto especificado por un objeto EndpointPair . A continuación, se puede usar IOutputStream para enviar datos al destino remoto.

El método GetOutputStreamAsync(EndpointPair) devolverá un IOutputStream cuando se complete correctamente. Al escribir en esa secuencia se enviarán datagramas al host remoto y al nombre del servicio especificados. IOutputStream siempre enviará al nombre de host remoto y al nombre del servicio remoto especificado en el método ConnectAsync.

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 GetOutputStreamAsync(EndpointPair) da como resultado la resolución de nombres del nombre de host remoto. Si la propiedad RemoteServiceName contiene un nombre de servicio, el método GetOutputStreamAsync da como resultado la resolución del nombre del servicio remoto en un puerto UDP.

Las propiedades RemoteHostName y RemoteServiceName deben proporcionarse en el objeto EndpointPair pasado en el parámetro endpointPair . Si RemoteHostName es null o 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 cadena vacía para la propiedad LocalServiceName , 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(EndpointPair), la aplicación puede establecer valores diferentes para los miembros RemoteHostName y RemoteServiceName en el parámetro endpointPair .

Para recibir datos de cualquier 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 BindEndpointAsync o BindServiceNameAsync para enlazar DatagramSocket a un nombre de servicio local o puerto UDP antes de llamar al método GetOutputStreamAsync. 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 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 GetOutputStreamAsync(EndpointPair) para obtener OutputStream para enviar datos al punto de conexión remoto. El método GetOutputStreamAsync(EndpointPair) también enlazará DatagramSocket a un nombre de servicio local o un puerto UDP y un nombre de host local o una dirección IP mediante el parámetro endpointPair .
  5. 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 de los métodos ConnectAsync cuando una aplicación usa el método BindEndpointAsync o BindServiceNameAsync para enlazar 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 GetOutputStreamAsync(EndpointPair). El adaptador especificado se usa para la operación de enlace. Si después de llamar a BindServiceNameAsync(String, NetworkAdapter) y el parámetro endpointPair pasado a GetOutputStreamAsync(EndpointPair) especifica un localHostName, se producirá un error en el método GetOutputStreamAsync(EndpointPair).

Consulte también

Se aplica a

GetOutputStreamAsync(HostName, String)

Inicia una operación para obtener un IOutputStream en un destino remoto especificado por un nombre de host remoto y un nombre de servicio remoto que se puede usar para enviar datos de red.

public:
 virtual IAsyncOperation<IOutputStream ^> ^ GetOutputStreamAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = GetOutputStreamAsync;
/// [Windows.Foundation.Metadata.Overload("GetOutputStreamAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<IOutputStream> GetOutputStreamAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("GetOutputStreamAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<IOutputStream> GetOutputStreamAsync(HostName remoteHostName, string remoteServiceName);
function getOutputStreamAsync(remoteHostName, remoteServiceName)
Public Function GetOutputStreamAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncOperation(Of IOutputStream)

Parámetros

remoteHostName
HostName

Nombre de host remoto o dirección IP remota.

remoteServiceName
String

Platform::String

winrt::hstring

Nombre del servicio remoto o puerto UDP remoto.

Devoluciones

IOutputStream que representa la operación asincrónica.

Atributos

Requisitos de Windows

Características de aplicaciones
ID_CAP_NETWORKING [Windows Phone]

Comentarios

El método [GetOutputStreamAsync(HostName, String) en un DatagramSocket se usa para iniciar una operación para obtener un IOutputStream en un destino de red remota especificado por un nombre de host remoto y un nombre de servicio remoto. A continuación, se puede usar IOutputStream para enviar datos al destino remoto.

El método [GetOutputStreamAsync(HostName, String) devolverá un IOutputStream cuando se complete correctamente. Al escribir en esa secuencia se enviarán datagramas al host remoto y al nombre del servicio especificados. IOutputStream siempre enviará al nombre de host remoto y al nombre del servicio remoto especificado en el método ConnectAsync.

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 [GetOutputStreamAsync(HostName, String) da como resultado la resolución de nombres del nombre de host remoto. Si el parámetro remoteServiceName contiene un nombre de servicio, el método [GetOutputStreamAsync(HostName, String) da como resultado la resolución del nombre del servicio remoto en un puerto UDP.

Se deben proporcionar los parámetros remoteHostName y remoteServiceName . Si el parámetro remoteHostName es null o el parámetro 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:

  • Use uno de los métodos GetOutputStreamAsync.
  • Después de una llamada correcta a uno de los métodos ConnectAsync , pase la propiedad OutputStream a un objeto DataWriter y use métodos en el objeto DataWriter para enviar datos.

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(HostName, String), la aplicación puede establecer valores diferentes para los parámetros remoteHostName y remoteServiceName .

Los métodos ConnectAsync permiten a una aplicación enviar datagramas UDP mediante un objeto DatagramSocket a un único destino de red.

Para recibir datos de cualquier 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 BindEndpointAsync o BindServiceNameAsync para enlazar DatagramSocket a un nombre de servicio local o puerto UDP antes de llamar al método GetOutputStreamAsync. 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 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. Enlace datagramSocket a un nombre de servicio local o a un puerto UDP.
  5. El controlador de eventos MessageReceived se invocará cada vez que llegue un mensaje desde el punto de conexión remoto.
  6. Llame al método GetOutputStreamAsync para obtener outputStream para enviar datos al punto de conexión remoto. Puede usar la información contenida en datagramSocketMessageReceivedEventArgs del controlador de eventos MessageReceived para establecer un OutputStream con el punto de conexión remoto que creó un mensaje entrante específico. 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 .

Consulte también

Se aplica a