Comunicando-se com localhost (loopback)
No Windows IoT Core, se você quiser criar uma conexão TCP/IP entre dois processos em execução no mesmo dispositivo e um deles for um aplicativo UWP, você deverá habilitar o loopback localhost.
Loopback e o depurador
Por padrão, a execução no depurador do Visual Studio habilita o loopback de saída automaticamente somente para essa sessão de depuração. Você não deve precisar fazer nada, desde que a caixa de seleção de loopback esteja marcada nas configurações do depurador para seu projeto de inicialização. Se você quiser implementar um ouvinte de soquete, deverá habilitar o loopback localhost para conexões de entrada (veja abaixo).
Habilitando a política de loopback de entrada
A política de loopback de entrada do localhost para o Windows IoT Core deve ser habilitada para aplicativos UWP que implementam servidores. Essa política é controlada pela seguinte chave do Registro:
[HKEY_LOCAL_MACHINE\system\currentcontrolset\services\mpssvc\parameters]
"IoTInboundLoopbackPolicy"=dword:00000001
Esse valor de chave do Registro IoTInboundLoopbackPolicy deve ser definido como dword:00000001 para habilitar. Se você alterar o valor do registro IoTInboundLoopbackPolicy, será necessário reinicializar para que a alteração entre em vigor. A política de loopback do localhost deve ser habilitada por padrão no Windows IoT Core
Para verificar se o valor está definido, execute o seguinte comando no dispositivo Windows IoT Core :
reg query hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy
Para habilitar a política, execute o seguinte comando no dispositivo Windows IoT Core :
reg add hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy /t REG_DWORD /d 1
Habilitando o loopback para um aplicativo UWP
Antes de habilitar o loopback para um aplicativo, você precisará do nome da família de pacotes. Você pode encontrar o nome da família de pacotes para um aplicativo instalado executando a lista iotstartup. Se a entrada da lista iotstartup para o aplicativo for IoTCoreDefaultApp_1w720vyc4ccym! Em seguida, o nome da família de pacotes é IoTCoreDefaultApp_1w720vyc4ccym
Para habilitar o loopback para conexões de cliente, use CheckNetIsolation.exe LoopbackExempt -a -n=<AppContainer or Package Family>
. CheckNetIsolation.exe configurará o loopback para o aplicativo e sairá. Isso permitirá que o aplicativo faça conexões de saída com um servidor.
Exemplo: CheckNetIsolation.exe LoopbackExempt -a -n=IoTCoreDefaultApp_1w720vyc4ccym
Para habilitar um aplicativo de servidor para receber conexões de entrada, use CheckNetIsolation.exe LoopbackExempt -is -n=<AppContainer or Package Family>
. Ao contrário da configuração de conexão de saída, as conexões de entrada exigem que CheckNetIsolation.exe sejam executadas continuamente enquanto o aplicativo de servidor está recebendo conexões. Isso requer um build do sistema operacional mais recente que 10.0.14393.
Exemplo: CheckNetIsolation.exe LoopbackExempt -is -n=IoTCoreDefaultApp_1w720vyc4ccym
A melhor maneira de executar CheckNetIsolation.exe automaticamente na inicialização é usar schtasks.exe: schtasks /create /tn MyTask /f /sc onstart /ru system /tr "checknetisolation LoopbackExempt -is -n=IoTCoreDefaultApp_1w720vyc4ccym"
Ao reinicializar, você deve ser capaz de verificar se checknetisolation.exe está em execução usando tlist.exe ou o Portal de Dispositivos do Windows