2016-08-11 24 views
0

同じマシン上で実行中の2つのuwpアプリケーション(Windows 10アプリケーション)を通信しようとしています。 Appsがすでにの場合は、異なるホストを実行すると、と通信できるため、コードは動作しています(両方のアプリケーションがマニフェストファイルで宣言されているローカルネットワークとパブリックネットワークで通信できるようになります)。 が同じホスト上で実行されている場合クライアントアプリケーションはをサーバーに接続できません。同じマシン上に2つのローカルuwpアプリケーションを接続

私は開発のためにVisual Studio 2015 Community Edition Update 3を使用しています。

ProjectSettings-> Debug-> Allow local network loopbackがチェックされています。

私は(両方のアプリケーションのための)コマンドラインを経由して広告LoopbackExemptに試してみました:

checknetisolation LoopbackExempt -d -n=<packagefamilyname> 

しかし、まだ機能していません。

サーバーサイドコード(考えはrelavantではないかもしれません)を使用して、コードのイム:

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

ローカルシステムをクライアントとして使用しますが、アプリケーションがサーバーとしてローカル接続を受信することはできません。

は注意ループバックが唯一の開発目的のために許可されている記事にHow to enable loopback and troubleshoot network isolation (Windows Runtime apps)

をMSDN上の注意事項を参照してください。 Visual Studioの外部にインストールされたWindowsランタイムアプリは、 が許可されていません。さらに、Windowsランタイムアプリケーションでは、クライアントネットワーク要求のターゲットアドレスとしてIPループバック のみを使用できます。だから、 にDatagramSocketのまたはStreamSocketListenerを使用するWindows ランタイムアプリはIPループバックアドレスをリッスン任意の 着信パケットを受信することが防止されます。

正確に何が必要なのかによって、いくつかのオプションがあります。最も可能性が高いのは次の2つです。

目的がテスト専用の場合は、別のシステムでアプリを実行します。 目標がIPCの場合は、App Serviceを実装します。 Appサービスは、UWPとUWPの通信のために特別に設計されています

サイドローディング(とにかくchecknetisolationを呼び出す必要がある場合)では、仲介されたWindowsランタイムコンポーネントまたはデスクトップを追加することもできますappを両方のクライアントが接続できるブローカサーバーとして使用していますが、まずはアプリサービスオプションを最初にチェックアウトします。

関連する問題