2016-08-11 2 views
0

Ich versuche, zwei uwp-Apps (Windows 10-Apps) auf demselben Computer zu kommunizieren. Die Apps bereits können kommunizieren, wenn auf verschiedene Hosts ausgeführt werden, so funktioniert der Code (beide Apps sind in lokalen und öffentlichen Netzwerken in ihren Manifestdateien deklariert aktiviert). Wenn auf demselben Host ausgeführt wird, kann die Clientanwendung nicht mit dem Server verbinden.Verbinden von zwei lokalen uwp-Apps auf demselben Computer

Ich verwende Visual Studio 2015 Community Edition Update 3 für die Entwicklung.

Unter ProjectSettings-> Debug-> Local Network Loopback zulassen ist aktiviert.

Ich habe versucht, Anzeige ein LoopbackExempt via Kommandozeile (für beide Apps):

checknetisolation LoopbackExempt -d -n=<packagefamilyname> 

aber immer noch nicht funktioniert.

Der Code im mit (Gedanken nicht relavant sein könnte)

Servercode:

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

Clientside-Code:

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

Antwort

2

Die Loopback Befreiung der App eine Verbindung aus ermöglichen das lokale System als Client, aber die App erhält keine lokalen Verbindungen als Server.

Siehe Hinweis auf MSDN in dem Artikel How to enable loopback and troubleshoot network isolation (Windows Runtime apps)

Hinweis Loopback nur für Entwicklungszwecke zulässig ist. Verwendung durch eine Windows Runtime-Anwendung außerhalb von Visual Studio installiert ist nicht zulässig. Darüber hinaus kann eine Windows Runtime-Anwendung eine IP-Loopback-Adresse als Zieladresse für eine Client-Netzwerkanforderung verwenden. So Windows Runtime-Anwendung, die eine Datagram oder StreamSocketListener verwendet zu auf einer IP-Loopback-Adresse hören wird grundsätzlich von einer eingehenden Pakete verhindert.

Es gibt mehrere andere Optionen, je nachdem, was genau benötigt wird. Die wahrscheinlichsten zwei sind:

Wenn das Ziel nur zum Testen ist, dann führen Sie die Anwendungen auf verschiedenen Systemen. Wenn das Ziel IPC ist, implementieren Sie eine App Service. App-Dienste sind speziell für UWP-zu-UWP-Kommunikation konzipiert

Wenn Sie Side-Loading (was Sie tun müssen, um checknetisolation sowieso aufrufen), dann können Sie auch in eine vermittelte Windows Runtime-Komponente oder einen Desktop hinzufügen App als Broker-Server, mit dem sich beide Clients verbinden können, aber ich würde auf jeden Fall zuerst die App-Service-Option ausprobieren.

Verwandte Themen