【发布时间】: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