Compartilhar via


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