与 localhost(循环)通信

在 Windows IoT 核心版上,如果想要在同一个设备上运行的两个进程之间创建 TCP/IP 连接,并且其中一个进程是 UWP 应用的,你必须启用 localhost 环回。

环回和调试程序

默认情况下,在 Visual Studio 调试程序下运行只会为该调试会话自动启用出站环回。  只要在启动项目的调试程序设置中勾选环回复选框,便无需执行任何操作。  如果要实现套接字侦听器,则必须为入站连接启用 localhost 环回(请参阅下方说明)。

启用入站环回策略

必须为实现服务器的 UWP 应用启用 Windows IoT 核心版的 localhost 入站环回策略。 此策略由以下注册表项控制:

        [HKEY_LOCAL_MACHINE\system\currentcontrolset\services\mpssvc\parameters]
            "IoTInboundLoopbackPolicy"=dword:00000001

此 IoTInboundLoopbackPolicy 注册表项值必须设为 dword:00000001 才能启用。 如果要更改 IoTInboundLoopbackPolicy 注册表值,则必须重新启动,才能使更改生效。  默认情况下,应在 Windows IoT 核心版上启用 localhost 环回策略

要验证是否设置了该值,请在 Windows IoT 核心版设备上执行以下命令:

        reg query hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy

要启用该策略,请在 Windows IoT 核心版设备上执行以下命令:

        reg add hklm\system\currentcontrolset\services\mpssvc\parameters /v IoTInboundLoopbackPolicy /t REG_DWORD /d 1

为 UWP 应用程序启用环回

在为应用程序启用环回之前,你需要包系列名称。 你可以运行 IoT 启动列表,以便为已安装的应用程序查找包系列名称。 如果应用程序的 IoT 启动列表条目是 IoTCoreDefaultApp_1w720vyc4ccym!App,则包系列名称 IoTCoreDefaultApp_1w720vyc4ccym

要为客户端连接启用环回,请使用 CheckNetIsolation.exe LoopbackExempt -a -n=<AppContainer or Package Family>。 CheckNetIsolation.exe 将为应用程序配置环回并退出。 这将使应用程序能够与服务器建立出站连接。

示例:CheckNetIsolation.exe LoopbackExempt -a -n=IoTCoreDefaultApp_1w720vyc4ccym

要启用服务器应用程序以接受入站连接,请使用 CheckNetIsolation.exe LoopbackExempt -is -n=<AppContainer or Package Family>。 与出站连接配置不同,当服务器应用程序接受连接时,入站连接需要 CheckNetIsolation.exe 才能持续运行。  这需要高于 10.0.14393 的操作系统版本。

示例:CheckNetIsolation.exe LoopbackExempt -is -n=IoTCoreDefaultApp_1w720vyc4ccym

在启动时自动运行 CheckNetIsolation.exe 的最佳方法是使用 schtasks.exe:schtasks /create /tn MyTask /f /sc onstart /ru system /tr "checknetisolation LoopbackExempt -is -n=IoTCoreDefaultApp_1w720vyc4ccym"

重新启动后,你应该能够使用 tlist.exe 或 Windows 设备门户来验证 checknetisolation.exe 是否正在运行