2016-08-11 2 views
0

Im пытается позволить двум приложениям uwp (приложениям Windows 10) взаимодействовать во время работы на одном компьютере. Приложения уже могут связываться при запуске на разных хостов, поэтому код работает (оба приложения разрешены для связи в локальных и общедоступных сетях, объявленных в их файлах манифеста). Когда работает на том же хосте, однако, клиентское приложение не может подключить к серверу.Подключение двух локальных uwp-приложений на одном компьютере

Im, использующий Visual Studio 2015 Community Edition Update 3 для разработки.

В разделе ProjectSettings-> Debug-> Разрешена проверка петли локальной сети.

Я попытался объявление в LoopbackExempt через командную строку (для обоих приложений):

checknetisolation LoopbackExempt -d -n=<packagefamilyname> 

Но до сих пор не работает.

Код им с помощью (мысль не может быть relavant)

Serverside код:

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); 

ответ

2

Освобождение петлевой позволит приложение для подключения к локальная система как клиент, но она не позволит приложению получать локальные подключения в качестве сервера.

Смотрите примечание на MSDN в статье How to enable loopback and troubleshoot network isolation (Windows Runtime apps)

Примечание Loopback допускается только в целях развития. Использование Приложение Windows Runtime, установленное за пределами Visual Studio, не разрешено . Кроме того, приложение Runtime Windows может использовать только петлю IP в качестве целевого адреса для сетевого запроса клиента. Таким образом, для Windows выполнения приложение, которое использует DatagramSocket или StreamSocketListener к слушать на адрес IP петлевой предотвращается получение любых входящих пакетов.

Существует несколько других вариантов в зависимости от того, что именно нужно. Наиболее вероятными являются два:

Если цель только для тестирования, тогда запустите приложения в разных системах. Если целью является IPC, тогда установите App Service. Службы приложений специально разработаны для обмена UWP и UWP.

Если вы загружаете боковую загрузку (что вам нужно делать для вызова checknetisolation в любом случае), вы также можете посмотреть добавление посреднического компонента Windows Runtime или рабочего стола приложение как сервер брокера, к которому оба клиента могут подключиться, но я обязательно обязательно проверю параметр сервиса приложения.

Смежные вопросы