2014-10-12 4 views
1
내 보편적 인 8.1 응용 프로그램에 StreamSocketListener을 설정하려면 다음 코드를 사용하고

:StreamSocketListener 및 로컬 호스트

_listener = new StreamSocketListener(); 
_listener.Control.QualityOfService = SocketQualityOfService.Normal; 
_listener.ConnectionReceived += OnConnectionReceived; 
await _listener.BindServiceNameAsync("8776"); 

내가 IP를 통해 & 검색으로 http://localhost:8776 (또는 직접하려고 할 때 그러나, 아무 문제없이 실행 주소 또는 컴퓨터 이름), 요청 시간이 초과되었습니다.

netstat에서 8776 포트가 열려 있음을 알 수 있습니다. & 수신 중이며, 루프백 예외를 사용 설정하고 방화벽을 사용할 수 없지만 여전히 연결할 수 없습니다. 이는 Windows 8.1 및 Windows Phone 8.1 응용 프로그램 모두에 해당됩니다.

다른 컴퓨터에서 연결을 시도하면 문제없이 작동합니다. 동일한 컴퓨터에서 연결할 수 있도록 사용할 수있는 설정/구성이 있습니까?

답변

3

Windows RT는 두 개의 WinRT 응용 프로그램 간의 루프백 액세스를 차단합니다. 이것은 네트워크 격리에 의해 제한되어 있기 때문에의 IP 루프백 주소를 사용하여

네트워크 통신은 윈도우 런타임 응용 프로그램에 간 통신 (둘 사이에 다른 응용 프로그램)을 사용할 수 없습니다. 네트워크 IP 루프백 주소를 사용하는 통신은 동일한 프로세스 내에서 통신 목적으로 응용 프로그램 내에서 허용됩니다.

더 많은 정보와 해결 방법 here

+0

나는 fiddler2를 통해 예외 목록에있는 모든 응용 프로그램을 추가했습니다,하지만 난 같은 동작을 얻을. –

+1

동일한 문서에서 : 참고 루프백은 개발 목적으로 만 허용됩니다. Visual Studio 외부에 설치된 Windows 런타임 응용 프로그램의 사용은 허용되지 않습니다. 또한 Windows 런타임 응용 프로그램은 IP 루프백을 클라이언트 네트워크 요청의 대상 주소로만 사용할 수 있습니다. 따라서 DatagramSocket 또는 StreamSocketListener를 사용하여 IP 루프백 주소에서 수신 대기하는 Windows 런타임 응용 프로그램은 들어오는 패킷을 수신하지 못합니다. –

+0

오, 그 부분을 놓쳤습니다. 감사 –