2016-08-11 137 views
0

我試圖讓兩個uwp應用程序(Windows 10應用程序)在同一臺機器上運行時進行通信。應用程序已經可以在不同主機上運行時通訊,所以代碼正常(兩個應用程序都可以在清單文件中聲明的本地和公共網絡中進行通訊)。 但是,當在同一主機上運行時,客戶端應用程序無法將連接到服務器。在同一臺機器上連接兩個本地uwp應用程序

即時通訊使用Visual Studio 2015 Community Edition Update 3進行開發。

在ProjectSettings-> Debug->下,選中允許本地網絡環回。

我試圖通過廣告的命令行LoopbackExempt(用於應用程序):

checknetisolation LoopbackExempt -d -n=<packagefamilyname> 

但仍然沒有工作。

使用(想到的可能不是初步認識)

Serverside集團代碼代碼IM:

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)

注意環回功能僅用於開發目的允許英寸 在Visual Studio之外安裝的Windows Runtime應用程序的使用不是允許的 。此外,Windows運行時應用程序可以將IP回送僅使用 作爲客戶端網絡請求的目標地址。因此,從收到任何 傳入數據包防止使用中的IP環回地址一DatagramSocket的StreamSocketListener到 聽一個Windows 運行的應用程序。

根據確切的需求,還有其他幾個選擇。最有可能的兩個是:

如果目標僅用於測試,則在不同的系統上運行應用程序。 如果目標是IPC,則執行App Service。應用服務是專門爲UWP和UWP通信設計的

如果您是側裝(無論如何您需要做的是調用checknetisolation),那麼您還可以考慮添加代理的Windows運行時組件或桌面應用程序作爲一個代理服務器,這兩個客戶端都可以連接到,但我肯定會首先檢查應用程序服務選項。

相關問題