Windows.Networking.Sockets Namespace

Stellt Sockets und WebSockets-Klassen bereit, die für Die Netzwerkkommunikation und Klassen für im Hintergrund empfangene Netzwerkbenachrichtigungen im Hintergrund für verpackte Windows-Apps (einschließlich UWP- und Windows App SDK -Desktop-Apps (WinUI 3) verwendet werden.

Klassen

Name Beschreibung
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.

DatagramSocket

Unterstützt die Netzwerkkommunikation mithilfe eines UDP-Datagrammsockets.

Ein Codebeispiel finden Sie unter Sockets.

DatagramSocketControl

Stellt Socketsteuerelementdaten für ein DatagramSocket -Objekt bereit.

DatagramSocketInformation

Stellt Socketinformationen für ein DatagramSocket -Objekt bereit.

DatagramSocketMessageReceivedEventArgs

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

MessageWebSocket

Unterstützt die Netzwerkkommunikation, die das Lesen und Schreiben von ganzen Nachrichten mithilfe eines WebSocket ermöglicht.

MessageWebSocketControl

Stellt Socketsteuerelementdaten für ein MessageWebSocket bereit.

MessageWebSocketInformation

Stellt Socketinformationen für ein MessageWebSocket bereit.

MessageWebSocketMessageReceivedEventArgs

Stellt Daten für ein empfangenes Nachrichtenereignis in einem MessageWebSocket bereit.

ServerMessageWebSocket

Unterstützt die Netzwerkkommunikation, die das Lesen und Schreiben von ganzen 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 Instanz von ServerMessageWebSocket durch Systemcode wie das Windows Device Portal (WDP) erstellt.

ServerMessageWebSocketControl

Stellt Socketsteuerelementdaten in einem 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 Instanz von ServerStreamWebSocket durch Systemcode wie das Windows Device Portal (WDP) erstellt.

ServerStreamWebSocketInformation

Stellt Socketinformationen für ein ServerStreamWebSocket -Objekt bereit.

SocketActivityContext

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

SocketActivityInformation

Stellt Informationen zum übertragenen Socket vom Socketbroker bereit.

SocketActivityTriggerDetails

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

SocketError

Stellt den Socketfehlerstatus 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 Socketsteuerelementdaten für ein StreamSocket -Objekt bereit.

StreamSocketInformation

Stellt Socketinformationen für ein StreamSocket -Objekt bereit.

StreamSocketListener

Unterstützt die Überwachung einer eingehenden Netzwerkverbindung mit einem TCP-Streamsocket oder Bluetooth RFCOMM.

StreamSocketListenerConnectionReceivedEventArgs

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

StreamSocketListenerControl

Stellt Socketsteuerelementdaten 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 mithilfe eines WebSocket ermöglicht.

StreamWebSocketControl

Stellt Socketsteuerelementdaten für ein StreamWebSocket -Objekt bereit.

StreamWebSocketInformation

Stellt Socketinformationen für ein StreamWebSocket -Objekt bereit.

WebSocketClosedEventArgs

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

WebSocketError

Stellt den Socketfehlerstatus 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

Name Beschreibung
BandwidthStatistics

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

RoundTripTimeStatistics

Stellt Roundtripzeitinformationen für ein StreamSocket -Objekt dar.

Schnittstellen

Name Beschreibung
IControlChannelTriggerEventDetails

Ein Objekt, das von der Hintergrundbrokerinfrastruktur instanziiert wird, die zum Unterscheiden von Steuerkanaltriggern verwendet wird.

IControlChannelTriggerResetEventDetails

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

IWebSocket

Bietet Zugriff auf die Netzwerkkommunikation, die das Lesen und Schreiben mithilfe eines WebSocket ermöglicht.

IWebSocketControl

Stellt Socketsteuerelementdaten für ein IWebSocket -Objekt bereit.

IWebSocketControl2

Stellt Socketsteuerelementdaten für ein IWebSocket -Objekt bereit. Diese Schnittstelle erweitert die IWebSocketControl-Schnittstelle mit einer zusätzlichen Eigenschaft.

IWebSocketInformation

Stellt Socketinformationen für ein IWebSocket -Objekt bereit.

IWebSocketInformation2

Stellt Socketinformationen für ein IWebSocket -Objekt bereit. Diese Schnittstelle erweitert IWebSocketInformation mit zusätzlichen Eigenschaften.

Enumerationen

Name Beschreibung
ControlChannelTriggerResetReason

Der Grund, warum ein ControlChannelTrigger zurückgesetzt wurde.

ControlChannelTriggerResourceType

Der von einem Steuerkanaltrigger verwendete Ressourcentyp.

ControlChannelTriggerStatus

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

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 zum 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 Statuswerte 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 Kategorie des Fehlers, der in einer SSL-Verbindung auftritt.

Hinweise

Hinweis

App-Framework-Kompatibilität: Die Windows. Networking.Sockets-APIs sind für Windows App SDK (WinUI 3)-Desktop-Apps und Win32-Desktop-Apps verfügbar, nicht nur UWP-Apps. Verpackte Desktop-Apps verwenden dieselben Netzwerkfunktionsdeklarationen wie UWP-Apps. Entpackte Desktop-Apps haben uneingeschränkten Netzwerkzugriff und müssen keine Funktionen deklarieren. Anleitungen finden Sie unter Aufrufen von Windows-Runtime-APIs in Desktop-Apps.

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

  • DatagramSocket. Ein UDP-Datagrammsocket, das für die Netzwerkkommunikation verwendet werden soll.
  • StreamSocket. Ein Datenstromsocket für die eingehende oder ausgehende Netzwerkkommunikation über TCP oder über Bluetooth-Verbindungen, die RFCOMM verwenden.
  • StreamSocketListener. Ein Stream-Socketlistener, der auf eingehende TCP-Netzwerkverbindungen oder eingehende Bluetooth-Verbindungen lauscht, die RFCOMM verwenden.
  • MessageWebSocket. Ein nachrichtenbasiertes WebSocket zum Lesen und Schreiben von ganzen Nachrichten für die Netzwerkkommunikation. Siehe WebSockets.
  • StreamWebSocket. Ein streambasiertes WebSocket zum Lesen und Schreiben von Datenströmen 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 aufrufen. Networking.Sockets-Namespace. Ausnahmen können aus Parameterüberprüfungsfehlern, Namensauflösungsfehlern und Netzwerkfehlern resultieren. Ausnahmen von Netzwerkfehlern (z. B. Verbindungsverlust, Verbindungsfehler und Serverfehler) können jederzeit auftreten. Diese Fehler führen dazu, dass Ausnahmen ausgelöst werden. Wenn die App nicht behandelt wird, kann eine Ausnahme dazu führen, dass die gesamte App von der Laufzeit beendet wird.

Die Windows. Der Namespace Networking.Sockets verfügt über praktische Hilfsmethoden und Enumerationen für die Behandlung von Fehlern bei der Verwendung von Sockets und WebSockets. Dies kann nützlich sein, um bestimmte Netzwerk exceptions in Ihrer App anders zu behandeln. Eine App kann auch das HRESULT aus der Ausnahme bei Parameterüberprüfungsfehlern verwenden, um ausführlichere Informationen zum Fehler zu erhalten, der die Ausnahme verursacht hat.

Weitere Informationen zu möglichen Ausnahmen und zur Behandlung 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 innerhalb des engen Bereichs befinden. Kurse im Windows. Networking.Proximity-Namespace unterstützt Netzwerkverbindungen mit einem StreamSocket mit Geräten in der Nähe, die Bluetooth oder Wi-Fi Direct verwenden. Der PeerFinder und verwandte Klassen im Windows. Mit dem Namespace Networking.Proximity kann Ihre App eine andere Instanz Ihrer App auf einem nahe gelegenen Gerät 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 nahe gelegenen Peer-App übertragen kann. Weitere Informationen finden Sie unter Unterstützen von Näherung und Tippen, Windows. Networking.Proximity, PeerFinder und das Näherungsbeispiel.

Ihre App kann auch ein StreamSocket für Netzwerkverbindungen zwischen Geräten verwenden, die Wi-Fi Direct mit Klassen im Windows verwenden. Devices.WiFiDirect-Namespace. 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) der 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 , keine Hostnamen oder IP-Adressen. Um ein StreamSocket mit Bluetooth zu verwenden, muss die Bluetooth.rfcomm-Gerätefunktion im App-Manifest festgelegt werden. Weitere Informationen finden Sie im Windows. Devices.Bluetooth.Rfcomm namespace, How to specify device capabilities for Bluetooth, and the Bluetooth Rfcomm Chat sample.

Verwenden von DatagramSocket mit Wi-Fi Direct

Ihre App kann ein DatagramSocket für Netzwerkdatenübertragungen zwischen Geräten verwenden, die Wi-Fi Direct unter Verwendung von Klassen im Windows verwenden. Devices.WiFiDirect-Namespace. 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

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

Auslöser für den Steuerkanal

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

Netzwerktrigger werden von lang ausgeführten Netzwerk-Apps (z. B. einer E-Mail-App) verwendet, um die Netzwerk- und Systemressourcennutzung zu minimieren. Mit Netzwerktriggern kann eine App über einen Zeitraum in einen Energiesparmodus versetzt werden, wodurch Netzwerkverbindungen intakt bleiben, aber in einem Energiesparzustand. Sie können ein Keepalive-Intervall festlegen, um das System darüber zu informieren, wann die App aufwachen 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 Sie lange ausgeführte Netzwerk-Apps auf mobilen Geräten verwenden.

Weitere Informationen finden Sie in der ControlChannelTrigger-Klasse und zum Festlegen von Optionen für die Hintergrundkonnektivität.

Socketaktivitätsauslöser

Der 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. Es wird insbesondere für Apps bereitgestellt, die Netzwerkdienste bereitstellen, bei denen sich die App als Dienstanbieter über DNS-SD registrieren und dann inaktiv wird. Ein SocketActivityTrigger benachrichtigt die App, wenn ein Client mit dem Dienst verbunden ist, damit der Dienst angeforderte Dienste aktivieren und bereitstellen kann. SocketActivityTrigger kann auch unter anderen Umständen verwendet werden. Verwenden Sie sie, wenn Sie Ihre App als Reaktion auf empfangenen Netzwerkdatenverkehr aktivieren möchten.

Wenn Ihre App Socketaktivitätstrigger verwendet, müssen Sie die PushNotifications-Funktion im App-Manifest angeben.

Auswählen eines Netzwerktriggers

Es gibt einige Szenarien, in denen beide Arten von Trigger geeignet wären. Wenn Sie auswählen, welche Art von Trigger in Ihrer App verwendet werden soll, beachten Sie die folgenden Hinweise.

Verwenden von Sockets und WebSockets auf Windows Server 2012

Auf Windows Server 2012 und Windows Server 2012 R2 wird der Windows.Networking.dll, der die meisten Klassen in der Windows implementiert. Der Namespace "Networking.Sockets" kann nicht geladen werden, es sei denn, das Media Foundation-Feature ist aktiviert. Daher verwenden Apps, die Sockets oder WebSockets-Klassen in der Windows verwenden. Der Namespace Networking.Sockets schlägt fehl, wenn das Media Foundation-Feature deaktiviert ist. Windows Server 2012- oder Windows Server 2012 R2-Installationen mit deaktivierter Media Foundation-Funktion.

Das Media Foundation-Feature kann auf Windows Server 2012 oder Windows Server 2012 R2 mithilfe von Server-Manager oder durch Eingeben des folgenden Texts in eine Eingabeaufforderung oder ein Skript aktiviert werden:

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

Verwenden von Sockets und WebSockets mit Netzwerkisolation

Mit der Netzwerkisolation in Windows können Sie das Sicherheitsprofil einer verpackten App (einschließlich UWP und verpackter Windows App SDK (WinUI 3)-Desktop-Apps vollständig steuern.

Mit 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, vom Client initiierte Anforderungen oder sowohl eingehende nicht angeforderte Anforderungen als auch ausgehende, vom Client initiierte Anforderungen) zu verwenden. Die Möglichkeit zum Erzwingen der Netzwerkisolation stellt sicher, dass die App auch dann, wenn eine App kompromittiert wird, nur Features (Netzwerktypen und Netzwerkanforderungen) verwenden kann, die die App als Funktionen gewährt wurde. Dies reduziert die möglichen Auswirkungen auf andere Apps und das Betriebssystem erheblich.

Windows erzwingt aktiv die Netzwerkisolation. Ein Aufruf einer Methode oder eines beliebigen Zugriffs auf eine Eigenschaft im Windows. Netzwerk.Sockets-Namespace (oder verwandte Namespaces, die Netzwerkzugriff erfordern) können fehlschlagen, wenn die entsprechende Netzwerkfunktion nicht aktiviert wurde.

Die Netzwerkfunktionen für eine App werden im App-Manifest konfiguriert, wenn die App erstellt wird. 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 mit einem Text-Editor festgelegt werden. Entpackte Desktop-Apps unterliegen nicht der Netzwerkisolation und müssen keine Netzwerkfunktionen deklarieren.

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

Siehe auch