【问题标题】:UWP - Enable loopback incoming connectionsUWP - 启用环回传入连接
【发布时间】:2017-11-28 18:06:47
【问题描述】:

我正在尝试使用 UWP 应用程序创建一个简单的 TCP 服务器,但我无法使用环回连接到本地计算机上的此服务器。到目前为止,我已经尝试过:

  • 新增功能:互联网(客户端和服务器)、互联网(客户端)、专用网络
  • 在 cmd 中使用 CheckNetIsolation.exe 启用环回
  • 在 VS 2017 项目属性中启用环回
  • 使用Enable AppContainer Loopback程序启用环回(说明环回已启用)

所有这些都失败了,我仍然无法连接到应用程序。尝试通过任何东西(Web 浏览器、自定义应用程序、telnet)连接时,我仍然遇到连接超时当然,当应用程序部署到远程设备时,一切正常。使用nestat显示0.0.0.0上的TCP端口已经打开。

【问题讨论】:

  • 您无法使用网络库连接到环回。会得到错误,说会拒绝 127.0.0.1。有人说它有效,所以我怀疑它与文件中定义 localhost 的方式有关:C:\Windows\System32\Drivers\etc\hosts。因此,当连接到 PC 时,让侦听器使用 IP.ANY 并首先启动。然后让客户端连接到 PC IP 地址(不是环回)。
  • 遗憾的是,在主机文件(如 127.0.0.1 me.com)中创建一个新条目并使用它也不起作用(ping 有效)。我听说有人使用虚拟机来运行它,但是对于测试你的应用程序来说,环回连接不是必不可少的吗?这个微软...
  • 这是微软的世界,不一定是现实。但你也可以责怪 IEEE。 IEEE RFC 规范有很多选择。我不熟悉环回要求,除了每个设备必须在地址 127.0.0.1 上都有一个。但我不确定它是如何工作的。我不知道环回是否意味着来自外部世界,内部世界,或两者兼而有之。微软已经实现了一个 IP.Any 用于监听,我相信它实际上是 127.0.0.1。因此,一旦您正在收听 127.0.0.1,您就不能同时用于发送。
  • IP.Any 实际上是一个 0.0.0.0 地址。您可以在侦听任何端口时在 cmd 处运行 netstat -a 来检查它。 UWP 只是禁止来自地址 127.0.0.1 的传入连接(连接不是实际数据,您可以建立传出连接并以两种方式发送数据)。因此,您无法创建 UWP 服务器并在本地对其进行测试。可悲的是,我不明白为什么以及为什么不能覆盖它。
  • 我也遇到了同样的问题,你有没有发现关于这个问题的新信息?不幸的是,互联网上没有太多内容......我可以理解安全原因 ecc......但至少对于调试,他们应该让我们 ablo 去做

标签: c# tcp server uwp loopback


【解决方案1】:

根据此页面https://docs.microsoft.com/en-us/windows/iot-core/develop-your-app/loopback,添加正常的环回豁免不足以运行服务器。你需要使用这个命令:CheckNetIsolation.exe LoopbackExempt -is -n=<AppContainer or Package Family>

与出站连接配置不同,入站连接需要 CheckNetIsolation.exe 在服务器应用程序接收连接时连续运行。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多