Windows.Networking.Sockets Espace de noms
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit des sockets et des classes WebSockets à utiliser pour les communications réseau et les classes pour les notifications réseau en temps réel reçues en arrière-plan pour les applications Windows empaquetées (y compris les applications UWP et SDK d'application Windows (WinUI 3).
Classes
| Nom | Description |
|---|---|
| ControlChannelTrigger |
Permet aux notifications en temps réel d’être reçues en arrière-plan pour les objets qui établissent une connexion TCP et souhaitent être avertis du trafic entrant. Appelez **BackgroundExecutionManager.RequestAccessAsync** avant d’utiliser ControlChannelTrigger. |
| DatagramSocket |
Prend en charge la communication réseau à l’aide d’un socket de datagramme UDP. Pour obtenir un exemple de code, consultez Sockets. |
| DatagramSocketControl |
Fournit des données de contrôle de socket sur un objet DatagramSocket . |
| DatagramSocketInformation |
Fournit des informations de socket sur un objet DatagramSocket . |
| DatagramSocketMessageReceivedEventArgs |
Fournit des données pour un événement MessageReceived sur un DatagramSocket. |
| MessageWebSocket |
Prend en charge la communication réseau qui permet de lire et d’écrire des messages entiers à l’aide d’un WebSocket. |
| MessageWebSocketControl |
Fournit des données de contrôle de socket sur un MessageWebSocket. |
| MessageWebSocketInformation |
Fournit des informations de socket sur un MessageWebSocket. |
| MessageWebSocketMessageReceivedEventArgs |
Fournit des données pour un événement reçu par message sur un MessageWebSocket. |
| ServerMessageWebSocket |
Prend en charge la communication réseau qui permet de lire et d’écrire des messages entiers à l’aide d’un objet WebSocket appartenant à un serveur web. Vous ne pouvez pas vous inscrire à une connexion WebSocket arbitraire ; Au lieu de cela, une instance de ServerMessageWebSocket est créée par du code système tel que le portail d’appareil Windows (WDP). |
| ServerMessageWebSocketControl |
Fournit des données de contrôle de socket sur un ServerMessageWebSocket. |
| ServerMessageWebSocketInformation |
Fournit des informations de socket sur un ServerMessageWebSocket. |
| ServerStreamWebSocket |
Prend en charge la communication réseau qui permet de lire et d’écrire des flux à l’aide d’un objet WebSocket appartenant à un serveur web. Vous ne pouvez pas vous inscrire à une connexion WebSocket arbitraire ; Au lieu de cela, une instance de ServerStreamWebSocket est créée par du code système tel que le portail d’appareil Windows (WDP). |
| ServerStreamWebSocketInformation |
Fournit des informations de socket sur un objet ServerStreamWebSocket . |
| SocketActivityContext |
Contexte associé à un socket lors du transfert de propriété du socket entre une application et le service de répartiteur de sockets. |
| SocketActivityInformation |
Fournit des informations sur le socket transféré à partir du répartiteur de sockets. |
| SocketActivityTriggerDetails |
Objet instancié par l’infrastructure de répartiteur en arrière-plan et utilisé par une application pour récupérer les détails lorsqu’un SocketActivityTrigger se produit. |
| SocketError |
Fournit l’état des erreurs de socket pour les opérations sur un DatagramSocket, StreamSocket ou StreamSocketListener. |
| StreamSocket |
Prend en charge la communication réseau à l’aide d’un socket de flux via TCP ou Bluetooth RFCOMM dans les applications UWP. |
| StreamSocketControl |
Fournit des données de contrôle de socket sur un objet StreamSocket . |
| StreamSocketInformation |
Fournit des informations de socket sur un objet StreamSocket . |
| StreamSocketListener |
Prend en charge l’écoute d’une connexion réseau entrante à l’aide d’un socket de flux TCP ou d’un RFCOMM Bluetooth. |
| StreamSocketListenerConnectionReceivedEventArgs |
Fournit des données pour un événement ConnectionReceived sur un objet StreamSocketListener . |
| StreamSocketListenerControl |
Fournit des données de contrôle de socket sur un objet StreamSocketListener . |
| StreamSocketListenerInformation |
Fournit des informations de socket sur un objet StreamSocketListener . |
| StreamWebSocket |
Prend en charge la communication réseau qui permet de lire et d’écrire des flux à l’aide d’un WebSocket. |
| StreamWebSocketControl |
Fournit des données de contrôle de socket sur un objet StreamWebSocket . |
| StreamWebSocketInformation |
Fournit des informations de socket sur un objet StreamWebSocket . |
| WebSocketClosedEventArgs |
Fournit des données pour un événement fermé sur un objet MessageWebSocket, StreamWebSocket ou IWebSocket . |
| WebSocketError |
Fournit l’état d’erreur de socket sur un objet MessageWebSocket ou StreamWebSocket . |
| WebSocketKeepAlive |
Fournit la possibilité d’envoyer un protocole WebSocket keep-alive sur un WebSocket connecté. |
| WebSocketServerCustomValidationRequestedEventArgs |
Fournit des données pour un événement ServerCustomValidationRequested sur un WebSocket. Cet événement se produit lorsqu’une nouvelle connexion sécurisée à un WebSocket est établie et donne à votre code la possibilité d’effectuer une validation personnalisée des certificats serveur avant l’établissement de la connexion. |
Structures
| Nom | Description |
|---|---|
| BandwidthStatistics |
Représente des informations de bande passante pour le transfert de données réseau à l’aide d’un objet StreamSocket, StreamWebSocket ou MessageWebSocket . |
| RoundTripTimeStatistics |
Représente les informations sur le temps d’aller-retour d’un objet StreamSocket . |
Interfaces
| Nom | Description |
|---|---|
| IControlChannelTriggerEventDetails |
Objet instancié par l’infrastructure de répartiteur en arrière-plan utilisée pour différencier les déclencheurs de canal de contrôle. |
| IControlChannelTriggerResetEventDetails |
Objet instancié par l’infrastructure de répartiteur en arrière-plan pour un événement ControlChannelReset pour indiquer qu’un ControlChannelTrigger a été réinitialisé. |
| IWebSocket |
Fournit l’accès à la communication réseau qui permet la lecture et l’écriture à l’aide d’un WebSocket. |
| IWebSocketControl |
Fournit des données de contrôle de socket sur un objet IWebSocket . |
| IWebSocketControl2 |
Fournit des données de contrôle de socket sur un objet IWebSocket . Cette interface étend l’interface IWebSocketControl avec une propriété supplémentaire. |
| IWebSocketInformation |
Fournit des informations de socket sur un objet IWebSocket . |
| IWebSocketInformation2 |
Fournit des informations de socket sur un objet IWebSocket . Cette interface étend IWebSocketInformation avec des propriétés supplémentaires. |
Énumérations
| Nom | Description |
|---|---|
| ControlChannelTriggerResetReason |
La raison pour laquelle un ControlChannelTrigger a été réinitialisé. |
| ControlChannelTriggerResourceType |
Type de ressource utilisé par un déclencheur de canal de contrôle. |
| ControlChannelTriggerStatus |
Spécifie si le système a pu terminer la configuration d’un objet ControlChannelTrigger à utiliser par des éléments de classe dans le Windows. Networking.Sockets et espaces de noms associés. |
| MessageWebSocketReceiveMode |
Décrit le type de message que le client acceptera. |
| SocketActivityConnectedStandbyAction |
Indique si une application qui utilise le service de répartiteur de sockets peut recevoir des paquets lorsque le système est connecté. |
| SocketActivityKind |
Décrit le type d’objet socket en cours de transfert vers ou depuis le répartiteur de sockets. |
| SocketActivityTriggerReason |
Raison pour laquelle un SocketActivityTrigger s’est produit. |
| SocketErrorStatus |
Spécifie les valeurs d’état d’une opération de socket. |
| SocketMessageType |
Spécifie le type d’un message pour un objet MessageWebSocket . |
| SocketProtectionLevel |
Spécifie le niveau de chiffrement à utiliser sur un objet StreamSocket . |
| SocketQualityOfService |
Spécifie la qualité de service d’un objet DatagramSocket ou StreamSocket . |
| SocketSslErrorSeverity |
Catégorie d’erreur qui se produit sur une connexion SSL. |
Remarques
Remarque
Compatibilité de l’infrastructure d’application : Le Windows. Les API Networking.Sockets sont disponibles pour les applications de bureau SDK d'application Windows (WinUI 3) et les applications de bureau Win32, et non seulement les applications UWP. Les applications de bureau empaquetées utilisent les mêmes déclarations de fonctionnalités réseau que les applications UWP. Les applications de bureau non empaquetées disposent d’un accès réseau illimité et n’ont pas besoin de déclarer des fonctionnalités. Pour obtenir des conseils, consultez Appeler Windows Runtime API dans les applications de bureau.
Le Windows. L’espace de noms Networking.Sockets fournit des classes et des interfaces pour la mise en réseau qui utilisent des sockets et des WebSockets. Voici les classes primaires.
- DatagramSocket. Un socket de datagramme UDP à utiliser pour la communication réseau.
- StreamSocket. Socket de flux à utiliser pour la communication réseau entrante ou sortante via TCP ou via des connexions Bluetooth qui utilisent RFCOMM.
- StreamSocketListener. Écouteur de socket de flux pour écouter les connexions réseau TCP entrantes ou les connexions Bluetooth entrantes qui utilisent RFCOMM.
- MessageWebSocket. WebSocket basé sur des messages pour lire et écrire des messages entiers pour la communication réseau. Voir WebSockets.
- StreamWebSocket. WebSocket basé sur un flux pour lire et écrire des flux pour les communications réseau. Voir WebSockets.
Ces classes primaires ont également un certain nombre d’informations et de classes de contrôle associées dans le Windows. Espace de noms Networking.Sockets.
Gestion des exceptions
Vous devez écrire du code pour gérer les exceptions lorsque vous appelez des méthodes asynchrones dans la Windows. Espace de noms Networking.Sockets. Les exceptions peuvent provenir d’erreurs de validation de paramètre, d’échecs de résolution de noms et d’erreurs réseau. Les exceptions des erreurs réseau (perte de connectivité, défaillances de connexion et défaillances de serveur, par exemple) peuvent se produire à tout moment. Ces erreurs entraînent la levée d’exceptions. Si elle n’est pas gérée par votre application, une exception peut entraîner l’arrêt de l’ensemble de votre application par le runtime.
Le Windows. L’espace de noms Networking.Sockets a des méthodes d’assistance et des énumérations pratiques pour gérer les erreurs lors de l’utilisation de sockets et de WebSockets. Cela peut être utile pour gérer des exceptions réseau spécifiques différemment dans votre application. Une application peut également utiliser HRESULT à partir de l’exception sur les erreurs de validation de paramètre pour en savoir plus sur l’erreur qui a provoqué l’exception.
Pour plus d’informations sur les exceptions possibles et sur la gestion des exceptions, consultez Gestion des exceptions dans les applications réseau.
Utilisation de StreamSocket avec proximité, Wi-Fi Direct et Bluetooth
Votre application peut utiliser un StreamSocket pour les connexions réseau entre les appareils situés dans une plage proche. Classes dans le Windows. L’espace de noms Networking.Proximity prend en charge les connexions réseau avec un StreamSocket aux appareils proches qui utilisent Bluetooth ou Wi-Fi Direct. PeerFinder et classes associées dans le Windows. L’espace de noms Networking.Proximity permet à votre application de découvrir une autre instance de votre application sur un appareil proche. La méthode PeerFinder.FindAllPeersAsync recherche les ordinateurs homologues qui exécutent la même application dans la plage sans fil. La méthode PeerFinder.ConnectAsync retourne un StreamSocket connecté que votre application peut utiliser pour transférer des données réseau avec l’application homologue voisine. Pour plus d’informations, consultez Prise en charge de la proximité et des appuis, Windows. Networking.Proximity, PeerFinder et l’exemple De proximité.
Votre application peut également utiliser un StreamSocket pour les connexions réseau entre les appareils qui utilisent Wi-Fi Direct avec des classes dans le Windows. Espace de noms Devices.WiFiDirect. La classe WiFiDirectDevice peut être utilisée pour localiser d’autres appareils dotés d’un appareil compatible Wi-Fi Direct (WFD). La méthode WiFiDirectDevice.GetDeviceSelector obtient l’identificateur de l’appareil pour un appareil WFD voisin. Une fois que vous avez une référence à un appareil WFD proche, vous pouvez appeler la méthode WiFiDirectDevice.GetConnectionEndpointPairs pour obtenir un objet EndpointPair . La méthode ConnectAsync(EndpointPair) ou ConnectAsync(EndpointPair, SocketProtectionLevel) sur la classe StreamSocket peut ensuite être utilisée pour établir une connexion de socket. Pour plus d’informations, consultez Windows. Devices.WiFiDirect et WiFiDirectDevice.
Bluetooth utilise des ID de service Bluetooth comme points de terminaison pour les connexions StreamSocket , pas les noms d’hôte ni les adresses IP. Pour utiliser un StreamSocket avec Bluetooth, la fonctionnalité d’appareil bluetooth.rfcomm doit être définie dans le manifeste de l’application. Pour plus d’informations, consultez la Windows. Espace de noms Devices.Bluetooth.Rfcomm, comment spécifier les fonctionnalités d’appareil pour Bluetooth et l’exemple de conversation Rfcomm Bluetooth.
Utilisation de DatagramSocket avec Wi-Fi Direct
Votre application peut utiliser un DatagramSocket pour les transferts de données réseau entre les appareils qui utilisent Wi-Fi Direct à l’aide de classes dans le Windows. Espace de noms Devices.WiFiDirect. La classe WiFiDirectDevice peut être utilisée pour localiser d’autres appareils dotés d’un appareil compatible Wi-Fi Direct (WFD). La méthode WiFiDirectDevice.GetDeviceSelector obtient l’identificateur de l’appareil pour un appareil WFD voisin. Une fois que vous avez une référence à un appareil WFD proche, vous pouvez appeler la méthode WiFiDirectDevice.GetConnectionEndpointPairs pour obtenir un objet EndpointPair . Les méthodes de la classe DatagramSocket peuvent être utilisées pour envoyer et recevoir des données à l’objet EndpointPair . Pour plus d’informations, consultez Windows. Devices.WiFiDirect et WiFiDirectDevice.
Utilisation de déclencheurs réseau
Le Windows. L’espace de noms Networking.Sockets offre deux types de déclencheurs que votre application peut utiliser pour la mise en réseau en arrière-plan : ControlChannelTrigger et SocketActivityTrigger.
Déclencheurs du canal de commande
ControlChannelTrigger permet à votre application de recevoir des paquets de données réseau et des keepalives réseau lorsque l’application est en arrière-plan. Cela permet à votre application de fournir un état en temps réel et des notifications réseau pour StreamSocket dans le Windows. Espace de noms Networking.Sockets et autres classes réseau dans les espaces de noms associés.
Les déclencheurs réseau sont utilisés par des applications réseau longues (par exemple, une application de messagerie) pour réduire l’utilisation des ressources réseau et système. Les déclencheurs réseau permettent à une application de passer en mode à faible alimentation pendant des périodes de temps, en conservant les connexions réseau intactes, mais dans un état à faible alimentation. Vous pouvez définir un intervalle keepalive pour informer le système quand l’application doit se réveiller. Vous pouvez également définir un déclencheur pour être averti lorsqu’un paquet est reçu pour l’application. Ces fonctionnalités de notification peuvent aider à prolonger la durée de vie de la batterie lors de l’utilisation d’applications réseau longues sur des appareils mobiles.
Pour plus d’informations, consultez la classe ControlChannelTrigger et comment définir des options de connectivité en arrière-plan.
Déclencheurs d’activité de socket
SocketActivityTrigger permet à votre application de recevoir des paquets de données réseau lorsqu’elle n’est pas active (même si elle est suspendue ou arrêtée), et même lorsqu’elle n’est pas actuellement chargée en mémoire. Elle est fournie en particulier pour les applications qui fournissent des services réseau, où l’application s’inscrit en tant que fournisseur de services via DNS-SD, puis devient inactive. Un SocketActivityTrigger informe l’application lorsqu’un client est connecté au service, afin que le service puisse activer et fournir des services demandés. SocketActivityTrigger peut également être utilisé dans d’autres circonstances. Utilisez-la chaque fois que vous souhaitez pouvoir activer votre application en réponse au trafic réseau reçu.
Si votre application utilise des déclencheurs d’activité de socket, vous devez spécifier la fonctionnalité pushNotifications dans le manifeste de l’application.
Choix d’un déclencheur réseau
Il existe certains scénarios où l’un ou l’autre type de déclencheur convient. Lorsque vous choisissez le type de déclencheur à utiliser dans votre application, tenez compte des conseils suivants.
- Si vous utilisez IXMLHTTPRequest2, System.Net.Http.HttpClient ou System.Net.Http.Http.HttpClientHandler, vous devez utiliser ControlChannelTrigger.
- Si vous utilisez StreamSockets avec push, préférez SocketActivityTrigger. Il permet au système de libérer de la mémoire et de réduire les exigences d’alimentation lorsque la connexion n’est pas utilisée activement.
- Si vous souhaitez réduire l’empreinte mémoire de votre application lorsqu’elle ne traite pas activement les requêtes réseau, préférez SocketActivityTrigger.
- Si vous souhaitez que votre application puisse recevoir des données pendant que le système est en mode Veille connectée, utilisez SocketActivityTrigger.
Utilisation de sockets et webSockets sur Windows Server 2012
Sur Windows Server 2012 et Windows Server 2012 R2, le Windows.Networking.dll qui implémente la plupart des classes dans le Windows. L’espace de noms Networking.Sockets ne peut pas être chargé, sauf si la fonctionnalité Media Foundation est activée. Par conséquent, les applications qui utilisent des classes sockets ou WebSockets dans le Windows. L’espace de noms Networking.Sockets échoue si la fonctionnalité Media Foundation est désactivée. Windows Server 2012 ou Windows Server 2012 R2 est installé avec la fonctionnalité Media Foundation désactivée.
La fonctionnalité Media Foundation peut être activée sur Windows Server 2012 ou Windows Server 2012 R2 à l’aide de Gestionnaire de serveur ou en entrant le texte suivant dans une invite de commandes ou un script :
dism /online /enable-feature /featurename:ServerMediaFoundation Une fois la fonctionnalité Media Foundation activée, l’utilisateur est invité à redémarrer. Une fois l’ordinateur redémarré, classes pour les sockets et webSockets dans le Windows. L’espace de noms Networking.Sockets fonctionne comme prévu.
Utilisation de sockets et webSockets avec isolation réseau
L’isolation réseau dans Windows vous permet de contrôler entièrement le profil de sécurité d’une application empaquetée (y compris les applications de bureau UWP et empaquetées SDK d'application Windows (WinUI 3).
L’isolation réseau vous permet de définir l’accès réseau nécessaire pour chaque application en choisissant les fonctionnalités appropriées. Une application sans l’ensemble de fonctionnalités appropriées n’est pas empêchée d’utiliser des types réseau spécifiques (Réseau Internet ou Famille/Travail) et des demandes réseau spécifiques (demandes sortantes initiées par le client ou demandes entrantes non sollicitées et demandes sortantes initiées par le client). La possibilité d’appliquer l’isolation réseau garantit que même si une application devient compromise, l’application peut uniquement utiliser des fonctionnalités (types de réseau et demandes réseau, par exemple) que l’application a été accordée en tant que fonctionnalités. Cela réduit considérablement l’impact possible sur d’autres applications et sur le système d’exploitation.
Windows applique activement l’isolation réseau. Appel à une méthode ou tout accès à une propriété dans le Windows. L’espace de noms Networking.Sockets (ou les espaces de noms associés qui nécessitent un accès réseau) peut échouer si la fonctionnalité réseau appropriée n’a pas été activée.
Les fonctionnalités réseau d’une application sont configurées dans le manifeste de l’application lorsque l’application est générée. Les fonctionnalités réseau sont généralement ajoutées à l’aide de Visual Studio lorsque vous développez votre application. Ils peuvent également être définis manuellement dans le fichier manifeste de l’application à l’aide d’un éditeur de texte. Les applications de bureau non empaquetées ne sont pas soumises à l’isolation réseau et n’ont pas besoin de déclarer des fonctionnalités réseau.
Pour plus d’informations sur l’isolation réseau, consultez Comment configurer les fonctionnalités d’isolation réseau.
Voir aussi
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- Ajout de la prise en charge de la mise en réseau
- Connexion avec des sockets
- WebSockets
- Gestion des exceptions dans les applications réseau
- Guide pratique pour configurer les fonctionnalités d’isolation réseau
- Comment définir des options de connectivité en arrière-plan
- Comment spécifier des fonctionnalités d’appareil pour Bluetooth
- Prise en charge de la proximité et des appuis
- Résolution des problèmes et débogage des connexions réseau
- SetSocketMediaStreamingMode
- Exemple de conversation Rfcomm Bluetooth
- Exemple DatagramSocket
- Exemple StreamWebSocket ControlChannelTrigger
- Exemple de socket TCP ControlChannelTrigger
- Exemple de proximité
- Exemple de StreamSocket
- Exemple DatagramSocket
- Exemple WebSocket
- Exemple de StreamSocket
- exemple directWi-Fi
- Wi-Fi Exemple de services direct (Windows 10)
- Exemple de socket de déclencheur d’activité de socket