Sprache

DatagramSocket.ConnectAsync Methode

Definition

Überlädt

Name Beschreibung
ConnectAsync(EndpointPair)

Startet einen Verbindungsvorgang auf einem DatagramSocket mit einem Remotenetzwerkziel, das als EndpointPair-Objekt angegeben ist.

ConnectAsync(HostName, String)

Startet einen Verbindungsvorgang auf einem DatagramSocket mit einem Remoteziel, das durch einen Remotehostnamen und einen Remotedienstnamen angegeben wird.

ConnectAsync(EndpointPair)

Startet einen Verbindungsvorgang auf einem 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 Namen des Remotediensts oder den Remote-UDP-Port für das Remotenetzwerkziel angibt.

Gibt zurück

Ein asynchroner Verbindungsvorgang für ein DatagramSocket-Objekt .

Attribute

Windows-Anforderungen

Anforderungen Beschreibung
App-Funktionen
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 ein, die im Parameter "endpointPair " auf den Remotehostnamen akzeptiert werden. Nur eingehende Pakete, die dem Remoteendpunkt im EndpointPair-Parameter entsprechen, lösen das MessageReceived-Ereignis im DatagramSocket aus.

Die App kann später Netzwerkdaten an das Remotenetzwerkziel senden, indem die WriteAsync-Methode für die OutputStream-Eigenschaft des DatagramSocket aufgerufen wird , oder indem Der OutputStream an ein DataWriter-Objekt übergeben und Methoden des DataWriter-Objekts aufgerufen werden.

Die RemoteHostName-Eigenschaft des im EndpointPair-Parameter übergebenen EndpointPair-Parameters kann entweder den Hostnamen oder die IP-Adresse des Remoteziels enthalten. Die RemoteServiceName-Eigenschaft des im endpointPair-Parameter übergebenen EndpointPair-Parameters 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 des EndpointPair einen Dienstnamen enthält, löst die ConnectAsync(EndPointPair)-Methode den Remotedienstnamen in eine UDP-Portnummer auf.

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

Die Eigenschaften "RemoteHostName" und "RemoteServiceName " müssen bereitgestellt werden. Wenn der 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 null LocalHostName-Eigenschaft enthält, gibt das System die lokale IP-Adresse an, die verwendet wird. Wenn das im Parameter "endpointPair" übergebene EndpointPair-Objekt eine leere LocalServiceName-Eigenschaft enthält, gibt das System den lokalen UDP-Port an, der verwendet wird.

Es gibt zwei Möglichkeiten, ein DatagramSocket zum Senden von UDP-Datagrammen an ein Remotenetzwerkziel zu verwenden:

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 parameter endpointPair auf die Remoteendpunktinformationen festgelegt ist. Der MessageReceived-Ereignishandler muss vor einem 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 Aufrufen 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. Beim Versuch, die ConnectAsync-Methode mit einer Multicast-IP-Adresse im Parameter "endpointPair " aufzurufen, wird der asynchrone Vorgang mit einem Fehler abgeschlossen. Beim Übergeben des Fehlers an die SocketError.GetStatus-Methode lautet der zurückgegebene Wert "SocketErrorStatus.HostNotFound".

Die Verwendung von ConnectAsync mit einer Broadcast-IP-Adresse wie 255.255.255.255 stellt eine Verbindung her, wird jedoch nur über den ersten gefundenen Netzwerkadapter übertragen. Um auf allen verfügbaren Adaptern zu übertragen, verwenden Sie GetOutputStreamAsync.

Siehe auch

Gilt für:

ConnectAsync(HostName, String)

Startet einen Verbindungsvorgang auf einem 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

Anforderungen Beschreibung
App-Funktionen
internetClientServer privateNetworkClientServer

Hinweise

Die ConnectAsync-Methode für ein DatagramSocket wird verwendet, um den Remotehost- oder Remote-IP-Adresse und den Namen des Remotediensts 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 ein, die auf den Parameter "remoteHostName " akzeptiert werden. 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 die WriteAsync-Methode für die OutputStream-Eigenschaft des DatagramSocket aufgerufen wird , oder indem Der OutputStream an ein DataWriter-Objekt übergeben und Methoden des DataWriter-Objekts aufgerufen werden.

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 Parameter "remoteHostName " 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 Parameter "remoteServiceName " erkannt werden, sind die Dienstnamen, die in der datei%windir%"\System32\drivers\etc\services " auf dem lokalen Computer aufgeführt sind. Jeder andere Dienstnamewert führt zu einer Namensdienstabfrage zu DNS-Servern (Domain Name System) für DNS SRV-Einträge.

Die Parameter "remoteHostName " und "remoteServiceName " müssen angegeben werden. Wenn der remoteHostName null ist oder der remoteServiceName null oder eine leere Zeichenfolge ist, tritt ein Fehler auf.

Es gibt zwei Möglichkeiten, ein DatagramSocket zum Senden von UDP-Datagrammen an ein Remotenetzwerkziel zu verwenden:

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 dem Ereignishandler das MessageReceived-Ereignis zuweisen und dann die ConnectAsync-Methode aufrufen, wobei die Parameter "remoteHostName " und "remoteServiceName " auf die Remoteendpunktinformationen festgelegt sind. Der MessageReceived-Ereignishandler muss vor einem 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 Methode BindEndpointAsync oder BindServiceNameAsync verwendet, um eine Bindung an einen lokalen Dienstnamen oder UDP-Port herzustellen. 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, das als Parameter an die ConnectAsync-Methoden übergeben wird.

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

Die Verwendung von ConnectAsync mit einer Broadcast-IP-Adresse wie 255.255.255.255 stellt eine Verbindung her, wird jedoch nur über den ersten gefundenen Netzwerkadapter übertragen. Um auf allen verfügbaren Adaptern zu übertragen, verwenden Sie GetOutputStreamAsync.

Siehe auch

Gilt für: