Compartilhar via


DatagramSocket.GetOutputStreamAsync Método

Definição

Sobrecargas

GetOutputStreamAsync(EndpointPair)

Inicia uma operação para obter um IOutputStream para um destino de rede remota especificado por um objeto EndpointPair que pode ser usado para enviar dados de rede.

GetOutputStreamAsync(HostName, String)

Inicia uma operação para obter um IOutputStream para um destino remoto especificado por um nome de host remoto e um nome de serviço remoto que pode ser usado para enviar dados de rede.

GetOutputStreamAsync(EndpointPair)

Inicia uma operação para obter um IOutputStream para um destino de rede remota especificado por um objeto EndpointPair que pode ser usado para enviar dados de rede.

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

Um par de pontos de extremidade que representa o nome do host local ou o endereço IP local, o nome do serviço local ou a porta UDP local, o nome do host remoto ou o endereço IP remoto e o nome do serviço remoto ou a porta UDP remota.

Retornos

Um IOutputStream que representa a operação assíncrona.

Atributos

Requisitos do Windows

Funcionalidades do aplicativo
ID_CAP_NETWORKING [Windows Phone]

Comentários

O método GetOutputStreamAsync(EndpointPair) em um DatagramSocket é usado para iniciar uma operação para obter um IOutputStream para um destino de rede remoto especificado por um objeto EndpointPair . O IOutputStream pode ser usado para enviar dados para o destino remoto.

O método GetOutputStreamAsync(EndpointPair) retornará um IOutputStream quando for concluído com êxito. Gravar nesse fluxo enviará datagramas para o host remoto e o nome do serviço especificados. O IOutputStream sempre enviará para o nome do host remoto e o nome do serviço remoto especificados no método ConnectAsync .

A propriedade RemoteHostName do EndpointPair passado no parâmetro endpointPair pode conter o nome do host ou o endereço IP do destino remoto. A propriedade RemoteServiceName do EndpointPair passado 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 GetOutputStreamAsync(EndpointPair) resultará na resolução de nomes do nome do host remoto. Se a propriedade RemoteServiceName contiver um nome de serviço, o método GetOutputStreamAsync resultará na resolução do nome do serviço remoto para uma porta UDP.

As propriedades RemoteHostName e RemoteServiceName devem ser fornecidas no objeto EndpointPair passado no parâmetro endpointPair . Se RemoteHostName for nulo ou 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 cadeia de caracteres vazia para a propriedade LocalServiceName , 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. Sempre que o método GetOutputStreamAsync(EndpointPair) é chamado, o aplicativo pode definir valores diferentes para os membros RemoteHostName e RemoteServiceName no parâmetro endpointPair .

Para receber dados de qualquer 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 BindEndpointAsync ou BindServiceNameAsync para associar o DatagramSocket a um nome de serviço local ou porta UDP antes de chamar o método GetOutputStreamAsync. 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 de operações é a seguinte:

  1. Crie o DatagramSocket.
  2. Use a propriedade Control 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 GetOutputStreamAsync(EndpointPair) para obter o OutputStream para enviar dados para o ponto de extremidade remoto. O método GetOutputStreamAsync(EndpointPair) também associará o DatagramSocket a um nome de serviço local ou porta UDP e a um nome de host local ou endereço IP usando o parâmetro endpointPair .
  5. O manipulador de eventos MessageReceived será invocado sempre que uma mensagem do ponto de extremidade remoto chegar. Os métodos GetOutputStreamAsync também diferem dos métodos ConnectAsync quando um aplicativo usa o método BindEndpointAsync ou BindServiceNameAsync para associar 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 GetOutputStreamAsync(EndpointPair). O adaptador especificado é usado para a operação de associação. Se depois de chamar BindServiceNameAsync(String, NetworkAdapter) e o parâmetro endpointPair passado para GetOutputStreamAsync(EndpointPair) especificar um LocalHostName, o método GetOutputStreamAsync(EndpointPair) falhará.

Confira também

Aplica-se a

GetOutputStreamAsync(HostName, String)

Inicia uma operação para obter um IOutputStream para um destino remoto especificado por um nome de host remoto e um nome de serviço remoto que pode ser usado para enviar dados de rede.

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

O nome do host remoto ou o endereço IP remoto.

remoteServiceName
String

Platform::String

winrt::hstring

O nome do serviço remoto ou a porta UDP remota.

Retornos

Um IOutputStream que representa a operação assíncrona.

Atributos

Requisitos do Windows

Funcionalidades do aplicativo
ID_CAP_NETWORKING [Windows Phone]

Comentários

O método [GetOutputStreamAsync(HostName, String) em um DatagramSocket é usado para iniciar uma operação para obter um IOutputStream para um destino de rede remota especificado por um nome de host remoto e um nome de serviço remoto. O IOutputStream pode ser usado para enviar dados para o destino remoto.

O método [GetOutputStreamAsync(HostName, String) retornará um IOutputStream quando for concluído com êxito. Gravar nesse fluxo enviará datagramas para o host remoto e o nome do serviço especificados. O IOutputStream sempre enviará para o nome do host remoto e o nome do serviço remoto especificados no método ConnectAsync .

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 [GetOutputStreamAsync(HostName, String) resultará na resolução de nomes do nome do host remoto. Se o parâmetro remoteServiceName contiver um nome de serviço, o método [GetOutputStreamAsync(HostName, String) resultará na resolução do nome do serviço remoto para uma porta UDP.

Os parâmetros remoteHostName e remoteServiceName devem ser fornecidos. Se o parâmetro remoteHostName for nulo ou o parâmetro 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:

  • Use um dos métodos GetOutputStreamAsync.
  • Após uma chamada bem-sucedida para um dos métodos ConnectAsync , passe a propriedade OutputStream para um objeto DataWriter e use métodos no objeto DataWriter para enviar dados.

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

Os métodos ConnectAsync permitem que um aplicativo envie datagramas UDP usando um objeto DatagramSocket para um único destino de rede.

Para receber dados de qualquer 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 BindEndpointAsync ou BindServiceNameAsync para associar o DatagramSocket a um nome de serviço local ou porta UDP antes de chamar o método GetOutputStreamAsync. 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 de operações é a seguinte:

  1. Crie o DatagramSocket.
  2. Use a propriedade Control 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. Associe o DatagramSocket a um nome de serviço local ou porta UDP.
  5. O manipulador de eventos MessageReceived será invocado sempre que uma mensagem do ponto de extremidade remoto chegar.
  6. Chame o método GetOutputStreamAsync para obter o OutputStream para enviar dados para o ponto de extremidade remoto. Você pode usar as informações contidas no datagramSocketMessageReceivedEventArgs do manipulador de eventos MessageReceived para estabelecer um OutputStream com o ponto de extremidade remoto que criou uma mensagem de entrada específica. 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 .

Confira também

Aplica-se a