Freigeben über


Windows.Networking.Sockets Namespace

Stellt Sockets und WebSockets-Klassen bereit, die für die Netzwerkkommunikation verwendet werden sollen, und Klassen für Echtzeit-Netzwerkbenachrichtigungen, die im Hintergrund für UWP-Apps empfangen werden.

Klassen

ControlChannelTrigger

Ermöglicht den Empfang von Echtzeitbenachrichtigungen im Hintergrund für Objekte, die eine TCP-Verbindung herstellen und über eingehenden Datenverkehr benachrichtigt werden möchten.

Rufen Sie **BackgroundExecutionManager.RequestAccessAsync** auf, bevor Sie ControlChannelTrigger verwenden.

Hinweis

Diese Klasse wird auf Windows Phone nicht unterstützt.

DatagramSocket

Unterstützt die Netzwerkkommunikation mithilfe eines UDP-Datagrammsockets.

Ein Codebeispiel finden Sie unter Sockets.

DatagramSocketControl

Stellt Socketsteuerungsdaten für ein DatagramSocket-Objekt bereit.

DatagramSocketInformation

Stellt Socketinformationen zu einem DatagramSocket-Objekt bereit.

DatagramSocketMessageReceivedEventArgs

Stellt Daten für ein MessageReceived-Ereignis in einem DatagramSocket bereit.

MessageWebSocket

Unterstützt die Netzwerkkommunikation, die das Lesen und Schreiben ganzer Nachrichten mit einem WebSocket ermöglicht.

MessageWebSocketControl

Stellt Socketsteuerungsdaten für ein MessageWebSocket bereit.

MessageWebSocketInformation

Stellt Socketinformationen zu einem MessageWebSocket bereit.

MessageWebSocketMessageReceivedEventArgs

Stellt Daten für ein nachrichten empfangenes Ereignis auf einem MessageWebSocket bereit.

ServerMessageWebSocket

Unterstützt die Netzwerkkommunikation, die das Lesen und Schreiben ganzer Nachrichten mithilfe eines WebSocket-Objekts ermöglicht, das einem Webserver gehört. Sie können sich nicht für eine beliebige WebSocket-Verbindung registrieren. stattdessen wird eine instance von ServerMessageWebSocket durch Systemcode wie das Windows-Geräteportal (WDP) erstellt.

ServerMessageWebSocketControl

Stellt Socketsteuerungsdaten für ein ServerMessageWebSocket bereit.

ServerMessageWebSocketInformation

Stellt Socketinformationen für ein ServerMessageWebSocket bereit.

ServerStreamWebSocket

Unterstützt die Netzwerkkommunikation, die das Lesen und Schreiben von Datenströmen mithilfe eines WebSocket-Objekts ermöglicht, das einem Webserver gehört. Sie können sich nicht für eine beliebige WebSocket-Verbindung registrieren. Stattdessen wird eine instance von ServerStreamWebSocket durch Systemcode wie das Windows-Geräteportal (WINDOWS Device Portal, WDP) erstellt.

ServerStreamWebSocketInformation

Stellt Socketinformationen für ein ServerStreamWebSocket-Objekt bereit.

SocketActivityContext

Der einem Socket zugeordnete Kontext beim Übertragen des Besitzers des Sockets zwischen einer App und dem Socketbrokerdienst.

SocketActivityInformation

Stellt Informationen zum vom Socketbroker übertragenen Socket bereit.

SocketActivityTriggerDetails

Ein Objekt, das von der Hintergrundbrokerinfrastruktur instanziiert und von einer App verwendet wird, um Details abzurufen, wenn ein SocketActivityTrigger auftritt.

SocketError

Stellt socket error status für Vorgänge in einem DatagramSocket, StreamSocket oder StreamSocketListener bereit.

StreamSocket

Unterstützt die Netzwerkkommunikation mithilfe eines Datenstromsockets über TCP oder Bluetooth RFCOMM in UWP-Apps.

StreamSocketControl

Stellt Socketsteuerungsdaten für ein StreamSocket-Objekt bereit.

StreamSocketInformation

Stellt Socketinformationen zu einem StreamSocket-Objekt bereit.

StreamSocketListener

Unterstützt das Lauschen auf eine eingehende Netzwerkverbindung über einen TCP-Stream-Socket oder Bluetooth RFCOMM.

StreamSocketListenerConnectionReceivedEventArgs

Stellt Daten für ein ConnectionReceived-Ereignis für ein StreamSocketListener-Objekt bereit.

StreamSocketListenerControl

Stellt Socketsteuerungsdaten für ein StreamSocketListener-Objekt bereit.

StreamSocketListenerInformation

Stellt Socketinformationen für ein StreamSocketListener-Objekt bereit.

StreamWebSocket

Unterstützt die Netzwerkkommunikation, die das Lesen und Schreiben von Datenströmen mit einem WebSocket ermöglicht.

StreamWebSocketControl

Stellt Socketsteuerungsdaten für ein StreamWebSocket-Objekt bereit.

StreamWebSocketInformation

Stellt Socketinformationen zu einem StreamWebSocket-Objekt bereit.

WebSocketClosedEventArgs

Stellt Daten für ein geschlossenes Ereignis für ein MessageWebSocket-, StreamWebSocket- oder IWebSocket-Objekt bereit.

WebSocketError

Stellt einen Socketfehler status für ein MessageWebSocket- oder StreamWebSocket-Objekt bereit.

WebSocketKeepAlive

Bietet die Möglichkeit, ein WebSocket-Protokoll keep-alive auf einem verbundenen WebSocket zu senden.

WebSocketServerCustomValidationRequestedEventArgs

Stellt Daten für ein ServerCustomValidationRequested-Ereignis in einem WebSocket bereit. Dieses Ereignis tritt auf, wenn eine neue, sichere Verbindung mit einem WebSocket hergestellt wird und Ihrem Code die Möglichkeit gibt, eine benutzerdefinierte Überprüfung der Serverzertifikate durchzuführen, bevor die Verbindung hergestellt wurde.

Strukturen

BandwidthStatistics

Stellt Bandbreiteninformationen für die Netzwerkdatenübertragung mithilfe eines StreamSocket-, StreamWebSocket- oder MessageWebSocket-Objekts dar.

RoundTripTimeStatistics

Stellt Informationen zur Roundtripzeit für ein StreamSocket-Objekt dar.

Schnittstellen

IControlChannelTriggerEventDetails

Ein Objekt, das von der Hintergrundbrokerinfrastruktur instanziiert wird und zur Unterscheidung von Steuerungskanaltriggern verwendet wird.

Hinweis

Diese Schnittstelle wird auf Windows Phone nicht unterstützt.

IControlChannelTriggerResetEventDetails

Ein Objekt, das von der Hintergrundbrokerinfrastruktur für ein ControlChannelReset-Ereignis instanziiert wird, um anzugeben, dass ein ControlChannelTrigger zurückgesetzt wurde.

Hinweis

Diese Schnittstelle wird auf Windows Phone nicht unterstützt.

IWebSocket

Ermöglicht den Zugriff auf die Netzwerkkommunikation, die das Lesen und Schreiben mithilfe eines WebSockets ermöglicht.

IWebSocketControl

Stellt Socketsteuerungsdaten für ein IWebSocket-Objekt bereit.

IWebSocketControl2

Stellt Socketsteuerungsdaten für ein IWebSocket-Objekt bereit. Diese Schnittstelle erweitert die IWebSocketControl-Schnittstelle um eine zusätzliche Eigenschaft.

IWebSocketInformation

Stellt Socketinformationen zu einem IWebSocket-Objekt bereit.

IWebSocketInformation2

Stellt Socketinformationen zu einem IWebSocket-Objekt bereit. Diese Schnittstelle erweitert IWebSocketInformation um zusätzliche Eigenschaften.

Enumerationen

ControlChannelTriggerResetReason

Der Grund, warum ein ControlChannelTrigger zurückgesetzt wurde.

Hinweis

Diese Enumeration wird auf Windows Phone nicht unterstützt.

ControlChannelTriggerResourceType

Der Ressourcentyp, der von einem Steuerungskanaltrigger verwendet wird.

Hinweis

Diese Enumeration wird auf Windows Phone nicht unterstützt.

ControlChannelTriggerStatus

Gibt an, ob das System die Konfiguration eines ControlChannelTrigger-Objekts für die Verwendung durch Klassenelemente in den Windows.Networking.Sockets und zugehörigen Namespaces abschließen konnte.

Hinweis

Diese Enumeration wird auf Windows Phone nicht unterstützt.

MessageWebSocketReceiveMode

Beschreibt die Art der Nachricht, die der Client akzeptiert.

SocketActivityConnectedStandbyAction

Gibt an, ob eine App, die den Socketbrokerdienst verwendet, Pakete empfangen kann, wenn das System an den verbundenen Stand by wechselt.

SocketActivityKind

Beschreibt die Art des Socketobjekts, das an oder vom Socketbroker übertragen wird.

SocketActivityTriggerReason

Der Grund, warum ein SocketActivityTrigger aufgetreten ist.

SocketErrorStatus

Gibt status Werte für einen Socketvorgang an.

SocketMessageType

Gibt den Typ einer Nachricht für ein MessageWebSocket-Objekt an.

SocketProtectionLevel

Gibt die Verschlüsselungsebene an, die für ein StreamSocket-Objekt verwendet werden soll.

SocketQualityOfService

Gibt die Dienstqualität für ein DatagramSocket - oder StreamSocket-Objekt an.

SocketSslErrorSeverity

Die Fehlerkategorie, die bei einer SSL-Verbindung auftritt.

Hinweise

Der Windows.Networking.Sockets-Namespace stellt Klassen und Schnittstellen für Netzwerke bereit, die Sockets und WebSockets verwenden. Hier sind die primären Klassen.

  • DatagramSocket. Ein UDP-Datagrammsocket, der für die Netzwerkkommunikation verwendet werden soll.
  • StreamSocket. Ein Streamsocket, der für die eingehende oder ausgehende Netzwerkkommunikation über TCP oder über Bluetooth-Verbindungen, die RFCOMM verwenden, verwendet werden soll.
  • StreamSocketListener. Ein Stream socket-Listener zum Lauschen auf eingehende TCP-Netzwerkverbindungen oder eingehende Bluetooth-Verbindungen, die RFCOMM verwenden.
  • MessageWebSocket. Ein nachrichtenbasiertes WebSocket zum Lesen und Schreiben ganzer Nachrichten für die Netzwerkkommunikation. Siehe WebSockets.
  • StreamWebSocket. Ein streambasiertes WebSocket zum Lesen und Schreiben von Streams für die Netzwerkkommunikation. Siehe WebSockets.

Diese primären Klassen verfügen auch über eine Reihe verwandter Informationen und Steuerelementklassen im Windows.Networking.Sockets-Namespace.

Behandeln von Ausnahmen

Sie müssen Code schreiben, um Ausnahmen zu behandeln, wenn Sie asynchrone Methoden im Windows.Networking.Sockets-Namespace aufrufen. Ausnahmen können sich auf Fehler bei der Parameterüberprüfung, Fehler bei der Namensauflösung und Netzwerkfehlern ergeben. Ausnahmen von Netzwerkfehlern (z. B. Verbindungsverlust, Verbindungsfehler und Serverfehler) können jederzeit auftreten. Diese Fehler haben zur Folge, dass Ausnahmen ausgelöst werden. Wenn sie nicht von Ihrer App verarbeitet wird, kann eine Ausnahme dazu führen, dass Ihre gesamte App von der Runtime beendet wird.

Der Windows.Networking.Sockets-Namespace enthält praktische Hilfsmethoden und Enumerationen für die Behandlung von Fehlern bei der Verwendung von Sockets und WebSockets. Mit ihnen lassen sich spezifische Netzwerkausnahmen in der App unterschiedlich behandeln. Eine App kann auch das HRESULT aus der Ausnahme für Parameterüberprüfungsfehler verwenden, um ausführlichere Informationen zu dem Fehler zu erhalten, der die Ausnahme verursacht hat.

Weitere Informationen zu möglichen Ausnahmen und zum Behandeln von Ausnahmen finden Sie unter Behandeln von Ausnahmen in Netzwerk-Apps.

Verwenden von StreamSocket mit Näherung, Wi-Fi Direct und Bluetooth

Ihre App kann ein StreamSocket für Netzwerkverbindungen zwischen Geräten verwenden, die sich im Nahbereich befinden. Klassen im Windows.Networking.Proximity-Namespace unterstützen Netzwerkverbindungen mit einem StreamSocket zu Geräten in der Nähe, die Bluetooth oder Wi-Fi Direct verwenden. Mit den PeerFinder-Klassen und den zugehörigen Klassen im Windows.Networking.Proximity-Namespace kann Ihre App eine weitere instance Ihrer App auf einem Gerät in der Nähe ermitteln. Die PeerFinder.FindAllPeersAsync-Methode sucht nach Peercomputern, auf denen dieselbe App im drahtlosen Bereich ausgeführt wird. Die PeerFinder.ConnectAsync-Methode gibt ein verbundenes StreamSocket zurück, mit dem Ihre App Netzwerkdaten mit der Peer-App in der Nähe übertragen kann. Weitere Informationen finden Sie unter Unterstützen von Näherung und Tippen, Windows.Networking.Proximity, PeerFinder und dem Näherungsbeispiel.

Ihre App kann auch ein StreamSocket für Netzwerkverbindungen zwischen Geräten verwenden, die Wi-Fi Direct mit Klassen im Windows.Devices.WiFiDirect-Namespace verwenden. Die WiFiDirectDevice-Klasse kann verwendet werden, um andere Geräte zu suchen, die über ein Wi-Fi Direct(WFD)-fähiges Gerät verfügen. Die WiFiDirectDevice.GetDeviceSelector-Methode ruft den Gerätebezeichner für ein nahe gelegenes WFD-Gerät ab. Sobald Sie einen Verweis auf ein nahe gelegenes WFD-Gerät haben, können Sie die WiFiDirectDevice.GetConnectionEndpointPairs-Methode aufrufen, um ein EndpointPair-Objekt abzurufen. Die Methode ConnectAsync(EndpointPair) oder ConnectAsync(EndpointPair, SocketProtectionLevel) für die StreamSocket-Klasse kann dann verwendet werden, um eine Socketverbindung herzustellen. Weitere Informationen finden Sie unter Windows.Devices.WiFiDirect und WiFiDirectDevice.

Bluetooth verwendet Bluetooth-Dienst-IDs als Endpunkte für StreamSocket-Verbindungen , nicht Hostnamen oder IP-Adressen. Um streamSocket mit Bluetooth zu verwenden, muss die Bluetooth.rfcomm-Gerätefunktion im App-Manifest festgelegt werden. Weitere Informationen finden Sie unter Windows.Devices.Bluetooth.Rfcomm-Namespace , Angeben von Gerätefunktionen für Bluetooth und Beispiel für Bluetooth Rfcomm Chat.

Verwenden von DatagramSocket mit Wi-Fi Direct

Ihre App kann ein DatagramSocket für Netzwerkdatenübertragungen zwischen Geräten verwenden, die Wi-Fi Direct mithilfe von Klassen im Windows.Devices.WiFiDirect-Namespace verwenden. Die WiFiDirectDevice-Klasse kann verwendet werden, um andere Geräte zu suchen, die über ein Wi-Fi Direct(WFD)-fähiges Gerät verfügen. Die WiFiDirectDevice.GetDeviceSelector-Methode ruft den Gerätebezeichner für ein nahe gelegenes WFD-Gerät ab. Sobald Sie einen Verweis auf ein nahe gelegenes WFD-Gerät haben, können Sie die WiFiDirectDevice.GetConnectionEndpointPairs-Methode aufrufen, um ein EndpointPair-Objekt abzurufen. Methoden für die DatagramSocket-Klasse können verwendet werden, um Daten an das EndpointPair-Objekt zu senden und zu empfangen. Weitere Informationen finden Sie unter Windows.Devices.WiFiDirect und WiFiDirectDevice.

Verwenden von Netzwerktriggern

Der Windows.Networking.Sockets-Namespace bietet zwei Arten von Triggern, die Ihre App für Hintergrundnetzwerke verwenden kann: ControlChannelTrigger und SocketActivityTrigger.

Steuerkanaltrigger

Mit ControlChannelTrigger kann Ihre App Netzwerkdatenpakete und Netzwerk-Keepalives empfangen, wenn sich die App im Hintergrund befindet. Auf diese Weise kann Ihre App Echtzeit-status und Netzwerkbenachrichtigungen für StreamSocket im Windows.Networking.Sockets-Namespace und andere Netzwerkklassen in verwandten Namespaces bereitstellen.

Netzwerktrigger werden von Netzwerk-Apps mit langer Ausführungsdauer (z. B. einer E-Mail-App) verwendet, um die Netzwerk- und Systemressourcennutzung zu minimieren. Netzwerktrigger ermöglichen es einer App, für einen bestimmten Zeitraum in einen Energiesparmodus zu wechseln, aufrechterhalten Netzwerkverbindungen intakt, aber in einem Energiesparzustand. Sie können ein Keepalive-Intervall festlegen, um das System darüber zu informieren, wann die App aktiviert werden soll. Sie können auch festlegen, dass ein Trigger benachrichtigt wird, wenn ein Paket für die App empfangen wird. Diese Benachrichtigungsfeatures können dazu beitragen, die Akkulaufzeit zu verlängern, wenn Netzwerk-Apps mit langer Ausführungszeit auf mobilen Geräten verwendet werden.

Weitere Informationen finden Sie unter ControlChannelTrigger-Klasse und Festlegen von Optionen für Hintergrundkonnektivität.

Socketaktivitätstrigger

SocketActivityTrigger ermöglicht es Ihrer App, Netzwerkdatenpakete zu empfangen, wenn sie nicht aktiv ist (auch wenn sie angehalten oder beendet wird) und auch dann, wenn sie derzeit nicht im Arbeitsspeicher geladen ist. Sie wird insbesondere für Apps bereitgestellt, die Netzwerkdienste bereitstellen, bei denen sich die App über DNS-SD als Dienstanbieter registriert und dann inaktiv wird. Ein SocketActivityTrigger benachrichtigt die App, wenn ein Client mit dem Dienst verbunden ist, damit der Dienst die angeforderten Dienste aktivieren und bereitstellen kann. SocketActivityTrigger kann auch unter anderen Umständen verwendet werden. Verwenden Sie es, wenn Sie Ihre App als Reaktion auf empfangenen Netzwerkdatenverkehr aktivieren möchten.

Wenn die App Socket-Aktivitätsauslöser verwendet, müssen Sie die pushNotifications-Funktion im App-Manifest angeben.

Wählen eines Netzwerkauslösers

Es gibt einige Szenarien, in denen beide Auslöserarten geeignet sind. Beachten Sie bei der Auswahl der Auslöserart der App Folgendes:

Verwenden von Sockets und WebSockets unter Windows Server 2012

Unter Windows Server 2012 und Windows Server 2012 R2 kann die Windows.Networking.dll , die die meisten Klassen im Windows.Networking.Sockets-Namespace implementiert, nicht geladen werden, es sei denn, das Media Foundation-Feature ist aktiviert. Daher schlagen Apps, die Sockets oder WebSockets-Klassen im Windows.Networking.Sockets-Namespace verwenden, fehl, wenn das Media Foundation-Feature deaktiviert ist. Windows Server 2012 oder Windows Server 2012 R2 wird mit deaktiviertem Media Foundation-Feature installiert.

Das Media Foundation-Feature kann unter Windows Server 2012 oder Windows Server 2012 R2 mithilfe von Server-Manager oder durch Eingabe des folgenden Texts in einer Eingabeaufforderung oder einem Skript aktiviert werden:

dism /online /enable-feature /featurename:ServerMediaFoundation Nachdem das Media Foundation-Feature aktiviert wurde, wird der Benutzer aufgefordert, einen Neustart zu starten. Nachdem der Computer neu gestartet wurde, funktionieren Klassen für Sockets und WebSockets im Windows.Networking.Sockets-Namespace wie erwartet.

Verwenden von Sockets und WebSockets mit Netzwerkisolation

Mit der Netzwerkisolation in Windows 8 können Sie das Sicherheitsprofil einer UWP-App vollständig steuern.

Mithilfe der Netzwerkisolation können Sie den für jede App erforderlichen Netzwerkzugriff definieren, indem Sie die entsprechenden Funktionen auswählen. Eine App ohne die entsprechenden Funktionen wird daran gehindert, bestimmte Netzwerktypen (Internet oder Heim-/Arbeitsnetzwerk) und bestimmte Netzwerkanforderungen (ausgehende clientinitiierte Anforderungen oder sowohl eingehende nicht angeforderte Anforderungen als auch ausgehende clientinitiierte Anforderungen) zu verwenden. Die Möglichkeit, die Netzwerkisolation zu erzwingen, stellt sicher, dass die App selbst dann, wenn eine App kompromittiert wird, nur Features (z. B. Netzwerktypen und Netzwerkanforderungen) verwenden kann, die der App als Funktionen gewährt wurden. Dadurch werden die möglichen Auswirkungen auf andere Apps und das Betriebssystem erheblich reduziert.

Windows 8 erzwingt aktiv die Netzwerkisolation. Ein Aufruf einer Methode oder ein Beliebiger Zugriff auf eine Eigenschaft im Windows.Networking.Sockets-Namespace (oder verwandten Namespaces, die Netzwerkzugriff erfordern) kann fehlschlagen, wenn die entsprechende Netzwerkfunktion nicht aktiviert wurde.

Die Netzwerkfunktionen für eine App werden beim Erstellen der App im App-Manifest konfiguriert. Netzwerkfunktionen werden in der Regel mithilfe von Visual Studio hinzugefügt, wenn Sie Ihre App entwickeln. Sie können auch manuell in der App-Manifestdatei mithilfe eines Text-Editors festgelegt werden.

Ausführlichere Informationen zur Netzwerkisolation finden Sie unter Konfigurieren von Netzwerkisolationsfunktionen.

Weitere Informationen