2016-08-11 3 views
0

임 동일한 컴퓨터에서 실행되는 동안 두 개의 uwp 앱 (Windows 10 앱)이 통신하도록합니다. Apps가 이미 인 경우 다른 호스트 인을 실행하면과 통신 할 수 있으므로 코드가 작동합니다 (두 앱 모두 매니페스트 파일에 선언 된 로컬 및 공용 네트워크에서 통신 할 수 있습니다). 같은 호스트에서 실행중인 경우클라이언트 응용 프로그램은을 서버에 연결할 수 없습니다.동일한 컴퓨터에서 두 개의 로컬 uwp 앱 연결

Im 개발을 위해 Visual Studio 2015 Community Edition 업데이트 3을 사용하고 있습니다.

ProjectSettings-> 디버그 -> 로컬 네트워크 루프백 허용이 선택되어 있습니다.

checknetisolation LoopbackExempt -d -n=<packagefamilyname> 

하지만 여전히 작동하지 :

나는 광고 (모두 애플 리케이션을위한) 커맨드를 통해 LoopbackExempt을 시도했다.

서버 측 코드 (생각 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 루프백 만 사용할 수 있습니다. 그래서 IP 루프백 주소에 에이 청취 DatagramSocket에 또는 StreamSocketListener를 사용하는 Windows 런타임 응용 프로그램은 어떤 들어오는 패킷을 수신하는 것을 방지 할 수있다.

정확히 무엇이 필요한지에 따라 몇 가지 옵션이 있습니다. 가장 가능성이 높은 두 가지는 다음과 같습니다.

목표가 테스트 전용 인 경우 다른 시스템에서 앱을 실행하십시오. 목표가 IPC 인 경우 App Service을 구현하십시오. 앱 서비스는 UWP와 UWP 간의 통신을 위해 특별히 설계되었습니다.

부두로 로딩 중이라면 (어쨌든 checknetisolation을 호출 할 필요가 있음) 중개 된 Windows 런타임 구성 요소 또는 데스크톱을 추가 할 수도 있습니다 app을 두 클라이언트가 연결할 수있는 브로커 서버로 사용하지만 앱 서비스 옵션을 먼저 확인해야합니다.

관련 문제