与 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 是否正在运行