Freigeben über


DatagramSocket.ConnectAsync Methode

Definition

Überlädt

ConnectAsync(EndpointPair)

Startet einen Verbindungsvorgang für ein DatagramSocket mit einem Remotenetzwerkziel, das als EndpointPair-Objekt angegeben ist.

ConnectAsync(HostName, String)

Startet einen Verbindungsvorgang für ein DatagramSocket mit einem Remoteziel, das durch einen Remotehostnamen und einen Remotedienstnamen angegeben wird.

ConnectAsync(EndpointPair)

Startet einen Verbindungsvorgang für ein DatagramSocket mit einem Remotenetzwerkziel, das als EndpointPair-Objekt angegeben ist.

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

Parameter

endpointPair
EndpointPair

Ein EndpointPair-Objekt , das den lokalen Hostnamen oder die IP-Adresse, den lokalen Dienstnamen oder UDP-Port, den Remotehostnamen oder die Remote-IP-Adresse sowie den Remotedienstnamen oder den UDP-Remoteport für das Remotenetzwerkziel angibt.

Gibt zurück

Ein asynchroner Verbindungsvorgang für ein DatagramSocket-Objekt .

Attribute

Windows-Anforderungen

App-Funktionen
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Hinweise

Diese ConnectAsync(EndPointPair)-Methode für ein DatagramSocket wird verwendet, um den lokalen und Remoteendpunkt zu definieren, an den Datagramme gesendet werden, wenn die OutputStream-Eigenschaft verwendet wird. Diese Methode schränkt auch Remote-IP-Adressen von Paketen, die akzeptiert werden, auf den Remotehostnamen im endpointPair-Parameter ein. Nur eingehende Pakete, die mit dem Remoteendpunkt im endpointPair-Parameter übereinstimmen, lösen das MessageReceived-Ereignis im DatagramSocket aus.

Die App kann später Netzwerkdaten an das Remotenetzwerkziel senden, indem sie die WriteAsync-Methode für die OutputStream-Eigenschaft des DatagramSocket aufruft oder den OutputStream an ein DataWriter-Objekt übergibt und Methoden des DataWriter-Objekts aufruft.

Die RemoteHostName-Eigenschaft der EndpointPair-Eigenschaft , die im endpointPair-Parameter übergeben wird, kann entweder den Hostnamen oder die IP-Adresse des Remoteziels enthalten. Die RemoteServiceName-Eigenschaft von EndpointPair , die im endpointPair-Parameter übergeben wird, kann entweder den Dienstnamen oder einen UDP-Port des Remoteziels enthalten. Wenn die RemoteHostName-Eigenschaft einen Hostnamen enthält, löst die ConnectAsync(EndPointPair)-Methode den Remotehostnamen in eine IP-Adresse auf. Wenn die RemoteServiceName-Eigenschaft von EndpointPair einen Dienstnamen enthält, löst die ConnectAsync(EndPointPair)-Methode den Remotedienstnamen in eine UDP-Portnummer auf.

Die standardmäßig erkannten Dienstnamenszeichenfolgen sind die Dienstnamen, die in der Datei %windir%\System32\drivers\etc\services auf dem lokalen Computer aufgeführt sind. Jeder andere Dienstnameswert führt zu einer Namensdienstabfrage an DNS-Server (Domain Name System) für DNS-SRV-Einträge.

Die Eigenschaften RemoteHostName und RemoteServiceName müssen bereitgestellt werden. Wenn RemoteHostName NULL ist oder der RemoteServiceName NULL oder eine leere Zeichenfolge ist, tritt ein Fehler auf.

Wenn das im endpointPair-Parameter übergebene EndpointPair-Objekt eine LocalHostName NULL-Eigenschaft enthält, gibt das System die lokale IP-Adresse an, die verwendet wird. Wenn das im endpointPair-Parameter übergebene EndpointPair-Objekt eine leere LocalServiceName-Eigenschaft enthält, stellt das System den lokalen UDP-Port bereit, der verwendet wird.

Es gibt zwei Möglichkeiten, ein DatagramSocket zu verwenden, um UDP-Datagramme an ein Remotenetzwerkziel zu senden:

Mit den GetOutputStreamAsync-Methoden kann eine App UDP-Datagramme mithilfe eines DatagramSocket-Objekts an mehrere Netzwerkziele senden. Jedes Mal, wenn die GetOutputStreamAsync-Methode aufgerufen wird, kann die App unterschiedliche Werte für die Parameter remoteHostName und remoteServiceName festlegen.

Um Daten von einem einzelnen Remoteendpunkt im DatagramSocket-Objekt zu empfangen, muss eine App das MessageReceived-Ereignis einem Ereignishandler zuweisen und dann die ConnectAsync(EndPointPair)-Methode aufrufen, wobei der endpointPair-Parameter auf die Remoteendpunktinformationen festgelegt ist. Der MessageReceived-Ereignishandler muss vor jedem Bindungs- oder Verbindungsvorgang festgelegt werden, andernfalls tritt ein Fehler auf.

Die typische Reihenfolge der Vorgänge lautet wie folgt:

Die BindServiceNameAsync(String, NetworkAdapter) -Methode kann verwendet werden, um einen Netzwerkadapter anzugeben, bevor die ConnectAsync(EndPointPair)-Methode aufgerufen wird. Der angegebene Adapter wird für den Bindungsvorgang verwendet. Wenn nach dem Aufruf der BindServiceNameAsync(String, NetworkAdapter) -Methode und der an ConnectAsync(EndPointPair) übergebene endpointPair-Parameter einen LocalHostName angibt, schlägt die ConnectAsync(EndPointPair)-Methode fehl.

Die ConnectAsync-Methode funktioniert nur für Unicast-IP-Adressen. Wenn Sie versuchen, die ConnectAsync-Methode mit einer Multicast-IP-Adresse in der im endpointPair-Parameter festgelegten Remote-IP-Adresse aufzurufen, wird der asynchrone Vorgang mit einem Fehler abgeschlossen. Wenn der Fehler an die SocketError.GetStatus-Methode übergeben wird, lautet der zurückgegebene Wert SocketErrorStatus.HostNotFound.

Wenn Sie ConnectAsync mit einer Broadcast-IP-Adresse wie 255.255.255.255 verwenden, wird eine Verbindung hergestellt, aber nur über den ersten gefundenen Netzwerkadapter übertragen. Verwenden Sie GetOutputStreamAsync, um auf allen verfügbaren Adaptern zu übertragen.

Weitere Informationen

Gilt für:

ConnectAsync(HostName, String)

Startet einen Verbindungsvorgang für ein DatagramSocket mit einem Remoteziel, das durch einen Remotehostnamen und einen Remotedienstnamen angegeben wird.

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

Parameter

remoteHostName
HostName

Der Hostname oder die IP-Adresse des Remotenetzwerkziels.

remoteServiceName
String

Platform::String

winrt::hstring

Der Dienstname oder UDP-Port des Remotenetzwerkziels.

Gibt zurück

Ein asynchroner Verbindungsvorgang für ein DatagramSocket-Objekt .

Attribute

Windows-Anforderungen

App-Funktionen
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Hinweise

Die ConnectAsync-Methode für ein DatagramSocket wird verwendet, um den Remotehostnamen oder die Remote-IP-Adresse sowie den Remotedienstnamen oder die UDP-Portnummer zu definieren, an die Datagramme gesendet werden, wenn die OutputStream-Eigenschaft verwendet wird. Diese Methode schränkt auch die Remote-IP-Adressen von Paketen, die akzeptiert werden, auf den remoteHostName-Parameter ein. Nur eingehende Pakete, die dem Parameter remoteHostName entsprechen, lösen das MessageReceived-Ereignis im DatagramSocket aus.

Die App kann später Netzwerkdaten an das Remotenetzwerkziel senden, indem sie die WriteAsync-Methode für die OutputStream-Eigenschaft des DatagramSocket aufruft oder den OutputStream an ein DataWriter-Objekt übergibt und Methoden des DataWriter-Objekts aufruft.

Der Parameter remoteHostName kann entweder den Hostnamen oder die IP-Adresse des Remoteziels enthalten. Der parameter remoteServiceName kann entweder den Dienstnamen oder einen UDP-Port des Remoteziels enthalten. Wenn der remoteHostName-Parameter einen Hostnamen enthält, löst die ConnectAsync-Methode den Remotehostnamen in eine IP-Adresse auf. Wenn der Parameter remoteServiceName einen Dienstnamen enthält, löst die ConnectAsync-Methode den Remotedienstnamen in eine UDP-Portnummer auf.

Die Dienstnamenzeichenfolgen, die standardmäßig vom remoteServiceName-Parameter erkannt werden, sind die Dienstnamen, die in der Datei %windir%\System32\drivers\etc\services auf dem lokalen Computer aufgeführt sind. Jeder andere Dienstnameswert führt zu einer Namensdienstabfrage an DNS-Server (Domain Name System) für DNS-SRV-Einträge.

Die Parameter remoteHostName und remoteServiceName müssen bereitgestellt werden. Wenn remoteHostName NULL oder remoteServiceName NULL oder eine leere Zeichenfolge ist, tritt ein Fehler auf.

Es gibt zwei Möglichkeiten, ein DatagramSocket zu verwenden, um UDP-Datagramme an ein Remotenetzwerkziel zu senden:

Mit den GetOutputStreamAsync-Methoden kann eine App UDP-Datagramme mithilfe eines DatagramSocket-Objekts an mehrere Netzwerkziele senden. Jedes Mal, wenn die GetOutputStreamAsync-Methode aufgerufen wird, kann die App unterschiedliche Werte für die Parameter remoteHostName und remoteServiceName festlegen.

Um Daten von einem einzelnen Endpunkt im DatagramSocket-Objekt zu empfangen, muss eine App das MessageReceived-Ereignis einem Ereignishandler zuweisen und dann die ConnectAsync-Methode mit den Parametern remoteHostName und remoteServiceName aufrufen, die auf die Remoteendpunktinformationen festgelegt sind. Der MessageReceived-Ereignishandler muss vor jedem Bindungs- oder Verbindungsvorgang festgelegt werden, andernfalls tritt ein Fehler auf.

Die typische Reihenfolge der Vorgänge lautet wie folgt:

  1. Erstellen Sie das DatagramSocket.
  2. Verwenden Sie die Control-Eigenschaft im DatagramSocket , um ein DatagramSocketControl-Objekt abzurufen und alle erweiterten Steuerelemente festzulegen. Dieser Schritt wird normalerweise von den meisten Apps nicht benötigt.
  3. Weisen Sie das MessageReceived-Ereignis einem Ereignishandler zu.
  4. Rufen Sie die ConnectAsync-Methode auf, um eine Verbindung mit dem Remoteendpunkt herzustellen.
  5. Verwenden Sie die OutputStream-Eigenschaft im DatagramSocket mit einem DataWriter-Objekt , um Nachrichten an den Remoteendpunkt zu senden.
  6. Der MessageReceived-Ereignishandler wird immer dann aufgerufen, wenn eine Nachricht vom Remoteendpunkt eingeht. Die GetOutputStreamAsync-Methoden unterscheiden sich auch von der ConnectAsync-Methode , wenn eine App die BindEndpointAsync- oder BindServiceNameAsync-Methode verwendet, um an einen lokalen Dienstnamen oder UDP-Port zu binden. Mit den GetOutputStreamAsync-Methoden empfängt die App Pakete von jedem Remoteziel, das an den lokalen Dienstnamen oder UDP-Port gesendet wird. Mit den ConnectAsync-Methoden empfängt die App nur Pakete vom Remoteziel, die als Parameter an die ConnectAsync-Methoden übergeben werden.

Die ConnectAsync-Methode funktioniert nur für Unicast-IP-Adressen. Wenn Sie versuchen, die ConnectAsync-Methode mit einer Multicast-IP-Adresse für den remoteHostName-Parameter aufzurufen, wird der asynchrone Vorgang mit einem Fehler abgeschlossen. Wenn der Fehler an die SocketError.GetStatus-Methode übergeben wird, lautet der zurückgegebene Wert SocketErrorStatus.HostNotFound.

Wenn Sie ConnectAsync mit einer Broadcast-IP-Adresse wie 255.255.255.255 verwenden, wird eine Verbindung hergestellt, aber nur über den ersten gefundenen Netzwerkadapter übertragen. Verwenden Sie GetOutputStreamAsync, um auf allen verfügbaren Adaptern zu übertragen.

Weitere Informationen

Gilt für: