Communication avec localhost (bouclage)
Sur Windows IoT Core, si vous souhaitez créer une connexion TCP/IP entre deux processus s’exécutant sur le même appareil et que l’un d’eux est une application UWP, vous devez activer le bouclage localhost.
Bouclage et débogueur
Par défaut, l’exécution sous le débogueur Visual Studio active automatiquement le bouclage sortant pour cette session de débogage uniquement. Vous ne devriez pas avoir à faire quoi que ce soit tant que la case de bouclage est cochée dans les paramètres du débogueur pour votre projet de démarrage. Si vous souhaitez implémenter un écouteur de socket, vous devez activer le bouclage localhost pour les connexions entrantes (voir ci-dessous).
Activation de la stratégie de bouclage entrant
La stratégie de bouclage entrant localhost pour Windows IoT Core doit être activée pour les applications UWP qui implémentent des serveurs. Cette stratégie est contrôlée par la clé de Registre suivante :
[HKEY_LOCAL_MACHINE\system\currentcontrolset\services\mpssvc\parameters]
"IoTInboundLoopbackPolicy"=dword:00000001
Cette valeur de clé de Registre IoTInboundLoopbackPolicy doit être définie sur dword:00000001 pour l’activer. Si vous modifiez la valeur de Registre IoTInboundLoopbackPolicy, vous devez redémarrer pour que la modification prenne effet. La stratégie de bouclage localhost doit être activée par défaut sur Windows IoT Core
Pour vérifier que la valeur est définie, exécutez la commande suivante sur l’appareil Windows IoT Core :
reg query hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy
Pour activer la stratégie, exécutez la commande suivante sur l’appareil Windows IoT Core :
reg add hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy /t REG_DWORD /d 1
Activation du bouclage pour une application UWP
Avant de pouvoir activer le bouclage pour une application, vous aurez besoin du nom de famille de package. Vous pouvez trouver le nom de la famille de package d’une application installée en exécutant la liste iotstartup. Si l’entrée de liste iotstartup pour l’application est IoTCoreDefaultApp_1w720vyc4ccym! L’application, puis le nom de la famille de package est IoTCoreDefaultApp_1w720vyc4ccym
Pour activer le bouclage pour les connexions clientes, utilisez CheckNetIsolation.exe LoopbackExempt -a -n=<AppContainer or Package Family>
. CheckNetIsolation.exe configurera le bouclage pour l’application et quittera. Cela permet à l’application d’établir des connexions sortantes vers un serveur.
Exemple : CheckNetIsolation.exe LoopbackExempt -a -n=IoTCoreDefaultApp_1w720vyc4ccym
Pour permettre à une application serveur de recevoir des connexions entrantes, utilisez CheckNetIsolation.exe LoopbackExempt -is -n=<AppContainer or Package Family>
. Contrairement à la configuration des connexions sortantes, les connexions entrantes nécessitent CheckNetIsolation.exe de s’exécuter en continu pendant que l’application serveur reçoit des connexions. Cela nécessite une build de système d’exploitation plus récente que 10.0.14393.
Exemple : CheckNetIsolation.exe LoopbackExempt -is -n=IoTCoreDefaultApp_1w720vyc4ccym
La meilleure façon d’exécuter CheckNetIsolation.exe automatiquement au démarrage consiste à utiliser schtasks.exe : schtasks /create /tn MyTask /f /sc onstart /ru system /tr "checknetisolation LoopbackExempt -is -n=IoTCoreDefaultApp_1w720vyc4ccym"
Lors du redémarrage, vous devez être en mesure de vérifier que checknetisolation.exe est en cours d’exécution à l’aide de tlist.exe ou du portail d’appareils Windows