Condividi tramite


DatagramSocket.GetOutputStreamAsync Metodo

Definizione

Overload

GetOutputStreamAsync(EndpointPair)

Avvia un'operazione per ottenere un IOutputStream a una destinazione di rete remota specificata da un oggetto EndpointPair che può quindi essere usato per inviare dati di rete.

GetOutputStreamAsync(HostName, String)

Avvia un'operazione per ottenere un IOutputStream a una destinazione remota specificata da un nome host remoto e un nome di servizio remoto che può quindi essere usato per inviare i dati di rete.

GetOutputStreamAsync(EndpointPair)

Avvia un'operazione per ottenere un IOutputStream a una destinazione di rete remota specificata da un oggetto EndpointPair che può quindi essere usato per inviare dati di rete.

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)

Parametri

endpointPair
EndpointPair

Coppia di endpoint che rappresenta il nome host locale o l'indirizzo IP locale, il nome del servizio locale o la porta UDP locale, il nome host remoto o l'indirizzo IP remoto e il nome del servizio remoto o la porta UDP remota.

Restituisce

IOutputStream che rappresenta l'operazione asincrona.

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_NETWORKING [Windows Phone]

Commenti

Il metodo GetOutputStreamAsync(EndpointPair) in un DatagramSocket viene usato per avviare un'operazione per ottenere un IOutputStream a una destinazione di rete remota specificata da un oggetto EndpointPair . IOutputStream può quindi essere usato per inviare dati alla destinazione remota.

Il metodo GetOutputStreamAsync(EndpointPair) restituirà un IOutputStream al termine dell'operazione. La scrittura in tale flusso invierà datagrammi all'host remoto e al nome del servizio specificati. IOutputStream invierà sempre al nome host remoto e al nome del servizio remoto specificato nel metodo ConnectAsync.

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 GetOutputStreamAsync(EndpointPair) restituisce la risoluzione dei nomi del nome host remoto. Se la proprietà RemoteServiceName contiene un nome di servizio, il metodo GetOutputStreamAsync restituisce la risoluzione del nome del servizio remoto su una porta UDP.

Le proprietà RemoteHostName e RemoteServiceName devono essere specificate nell'oggetto EndpointPair passato nel parametro endpointPair . Se RemoteHostName è null o RemoteServiceName è null o una stringa vuota, si verificherà un errore.

Se l'oggetto EndpointPair passato nel parametro endpointPair contiene una proprietà LocalHostName null, il sistema fornirà l'indirizzo IP locale che verrà usato. Se l'oggetto EndpointPair passato nel parametro endpointPair contiene una stringa vuota per la proprietà LocalServiceName , il sistema fornirà la porta UDP locale che verrà utilizzata.

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(EndpointPair), l'app può impostare valori diversi per i membri RemoteHostName e RemoteServiceName nel parametro endpointPair .

Per ricevere dati da qualsiasi endpoint remoto nell'oggetto DatagramSocket , un'app deve assegnare l'evento MessageReceived a un gestore eventi e quindi chiamare il metodo BindEndpointAsync o BindServiceNameAsync per associare DatagramSocket a un nome del servizio locale o a una porta UDP prima di chiamare il metodo GetOutputStreamAsync. Il gestore eventi MessageReceived deve essere impostato prima di qualsiasi operazione di associazione o connessione. In caso contrario, si verificherà un errore.

L'ordine tipico delle operazioni è il seguente:

  1. Creare datagramSocket.
  2. Utilizzare la proprietà Control per recuperare un oggetto DatagramSocketControl e impostare tutti i controlli avanzati. Questo passaggio non è normalmente necessario per la maggior parte delle app.
  3. Assegnare l'evento MessageReceived a un gestore eventi.
  4. Chiamare il metodo GetOutputStreamAsync(EndpointPair) per ottenere OutputStream per inviare dati all'endpoint remoto. Il metodo GetOutputStreamAsync(EndpointPair) associa anche DatagramSocket a un nome di servizio locale o a una porta UDP e a un nome host o un indirizzo IP locale usando il parametro endpointPair .
  5. Il gestore eventi MessageReceived verrà richiamato ogni volta che arriva un messaggio dall'endpoint remoto. I metodi GetOutputStreamAsync differiscono anche dai metodi ConnectAsync quando un'app usa il metodo BindEndpointAsync o BindServiceNameAsync per associare un nome di servizio locale o 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 BindServiceNameAsync(String, NetworkAdapter) può essere usato per specificare una scheda di rete prima di chiamare il metodo GetOutputStreamAsync(EndpointPair). L'adattatore specificato viene utilizzato per l'operazione di associazione. Se dopo aver chiamato BindServiceNameAsync(String, NetworkAdapter) e il parametro endpointPair passato a GetOutputStreamAsync(EndpointPair) specifica un LocalHostName, il metodo GetOutputStreamAsync(EndpointPair) avrà esito negativo.

Vedi anche

Si applica a

GetOutputStreamAsync(HostName, String)

Avvia un'operazione per ottenere un IOutputStream a una destinazione remota specificata da un nome host remoto e un nome di servizio remoto che può quindi essere usato per inviare i dati di rete.

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)

Parametri

remoteHostName
HostName

Nome host remoto o indirizzo IP remoto.

remoteServiceName
String

Platform::String

winrt::hstring

Nome del servizio remoto o porta UDP remota.

Restituisce

IOutputStream che rappresenta l'operazione asincrona.

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_NETWORKING [Windows Phone]

Commenti

Il metodo [GetOutputStreamAsync(HostName, String) in un DatagramSocket viene usato per avviare un'operazione per ottenere un IOutputStream in una destinazione di rete remota specificata da un nome host remoto e da un nome di servizio remoto. IOutputStream può quindi essere usato per inviare dati alla destinazione remota.

Il metodo [GetOutputStreamAsync(HostName, String) restituirà un IOutputStream al termine dell'operazione. La scrittura in tale flusso invierà datagrammi all'host remoto e al nome del servizio specificati. IOutputStream invierà sempre al nome host remoto e al nome del servizio remoto specificato nel metodo ConnectAsync.

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 [GetOutputStreamAsync(HostName, String) restituisce la risoluzione dei nomi del nome host remoto. Se il parametro remoteServiceName contiene un nome di servizio, il metodo [GetOutputStreamAsync(HostName, String) restituisce la risoluzione del nome del servizio remoto su una porta UDP.

È necessario specificare i parametri remoteHostName e remoteServiceName . Se il parametro remoteHostName è null o il parametro 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:

  • Usare uno dei metodi GetOutputStreamAsync.
  • Dopo la corretta chiamata a uno dei metodi ConnectAsync , passare la proprietà OutputStream a un oggetto DataWriter e utilizzare i metodi nell'oggetto DataWriter per inviare dati.

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(HostName, String), l'app può impostare valori diversi per i parametri remoteHostName e remoteServiceName .

I metodi ConnectAsync consentono a un'app di inviare datagrammi UDP usando un oggetto DatagramSocket a una singola destinazione di rete.

Per ricevere dati da qualsiasi endpoint remoto nell'oggetto DatagramSocket , un'app deve assegnare l'evento MessageReceived a un gestore eventi e quindi chiamare il metodo BindEndpointAsync o BindServiceNameAsync per associare DatagramSocket a un nome del servizio locale o a una porta UDP prima di chiamare il metodo GetOutputStreamAsync. Il gestore eventi MessageReceived deve essere impostato prima di qualsiasi operazione di associazione o connessione. In caso contrario, si verificherà un errore.

L'ordine tipico delle operazioni è il seguente:

  1. Creare datagramSocket.
  2. Utilizzare la proprietà Control per recuperare un oggetto DatagramSocketControl e impostare tutti i controlli avanzati. Questo passaggio non è normalmente necessario per la maggior parte delle app.
  3. Assegnare l'evento MessageReceived a un gestore eventi.
  4. Associare DatagramSocket a un nome di servizio locale o a una porta UDP.
  5. Il gestore eventi MessageReceived verrà richiamato ogni volta che arriva un messaggio dall'endpoint remoto.
  6. Chiamare il metodo GetOutputStreamAsync per ottenere OutputStream per inviare dati all'endpoint remoto. È possibile usare le informazioni contenute in DatagramSocketMessageReceivedEventArgs dal gestore eventi MessageReceived per stabilire un outputStream con l'endpoint remoto che ha creato un messaggio in arrivo specifico. I metodi GetOutputStreamAsync differiscono anche dal metodo ConnectAsync quando un'app usa il metodo BindEndpointAsync o BindServiceNameAsync per l'associazione a un nome di 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 .

Vedi anche

Si applica a