【问题标题】:Connecting two local uwp Apps on same machine在同一台机器上连接两个本地 uwp 应用程序
【发布时间】:2016-12-18 06:37:35
【问题描述】:

我试图让两个 uwp 应用程序(Windows 10 应用程序)在同一台机器上运行时进行通信。应用程序在不同主机上运行时已经可以通信,因此代码可以正常工作(两个应用程序都可以在其清单文件中声明的本地和公共网络中进行通信)。 但是,在同一主机上运行时,客户端应用程序无法连接到服务器。

我正在使用 Visual Studio 2015 Community Edition Update 3 进行开发。

在ProjectSettings->Debug->Allow local network loopback 下勾选。

我尝试通过命令行(适用于两个应用程序)添加 LoopbackExempt:

checknetisolation LoopbackExempt -d -n=<packagefamilyname>

但还是不行。

我正在使用的代码(认为可能不相关)

服务器端代码:

var listener = new StreamSocketListener();
listener.ConnectionReceived += Listener_ConnectionReceived1;
await listener.BindServiceNameAsync("20000", SocketProtectionLevel.PlainSocket);

客户端代码:

StreamSocket socket = new StreamSocket();
_hostName = <hostname/ip>;
await socket.ConnectAsync(new HostName(_hostName), "20000",SocketProtectionLevel.PlainSocket);

【问题讨论】:

    标签: networking uwp


    【解决方案1】:

    环回豁免将允许应用作为客户端连接到本地系统,但不允许应用作为服务器接收本地连接。

    How to enable loopback and troubleshoot network isolation (Windows Runtime apps)文章中MSDN上的注

    注意  环回仅允许用于开发目的。使用 在 Visual Studio 之外安装的 Windows 运行时应用程序不是 允许。此外,Windows 运行时应用只能使用 IP 环回 作为客户端网络请求的目标地址。所以一个窗口 使用 DatagramSocketStreamSocketListener 的运行时应用程序 侦听 IP 环回地址被阻止接收任何 传入数据包。

    根据具体需求,还有其他几种选择。最可能的两个是:

    如果目标仅用于测试,则在不同系统上运行应用。 如果目标是 IPC,则实施 App Service。应用服务专为 UWP 到 UWP 通信而设计

    如果您正在旁加载(无论如何您都需要调用 checknetisolation),那么您还可以考虑添加代理的 Windows 运行时组件或桌面应用程序作为代理服务器,两个客户端都可以连接到该代理服务器,但我肯定会先查看应用服务选项。

    【讨论】:

    • 对不起。我是 UWP 新手,正在寻找开发可在 LAN 下运行的 UWP 应用程序的方法。例如,餐厅老板和售货柜台在同一个局域网下。你能告诉我系统的架构,我如何编写代码来开发 UWP。应该使用哪些技术来实现该功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多