2017-10-11 6 views
-1

Windows IoT를 사용하여 TCPClient가 설치된 네트워크의 다른 응용 프로그램에 연결합니다. 이제 우리 모두를 혼란스럽게하는 한 가지 점을 제외하고는 모두 작동합니다. 우리가 우리의 나무 딸기 파이 (나 버전 2 같아요)에서 네트워크 케이블을 뽑으면 GUI와 함께 시작 응용 프로그램이 즉시 중지됩니다. 케이블을 다시 연결하면 잠시 후 Startup 앱이 다시 시작됩니다.windows iot는 네트워크 케이블이 연결되어 있지 않은 경우 UWP 응용 프로그램을 중지합니다.

우리는 VS2017을 사용하여 팔 UWP 앱을 빌드합니다.

응용 프로그램을 어떻게 막을 수 있습니까?

+1

Raspberry PI SE에서 더 좋을 수도 있습니다. – jdv

+1

"Raspberry PI SE"는 무엇을 의미합니까? 나는 그것을 모른다. 리눅스인가? 그렇다면 옵션이 아닙니다. – Trivalik

+1

https://raspberrypi.stackexchange.com/ – jdv

답변

0

소스 코드가 없으므로 네트워크 케이블을 분리하면 UI가있는 응용 프로그램이 중지되지 않습니다. 라스베리 파이 3에서 다음과 같은 조각 코드를 테스트했습니다. 전경 작업에서 비동기 방법이 권장됩니다. Asynchronous programming을 참조하십시오.

서버 :

 TcpListener tcpListener = new TcpListener(IPAddress.Any, 6550); 
     tcpListener.Start(); 
     byte[] buffer = new byte[1024]; 

     String data = string.Empty; 

     while (true) 
     { 
      var client = await tcpListener.AcceptTcpClientAsync(); 
      var stream = client.GetStream(); 

      int i = 0; 

      // Loop to receive all the data sent by the client. 
      do 
      { 
       i = await stream.ReadAsync(buffer, 0, buffer.Length); 
       if(i > 0) 
       { 
        // Translate data bytes to a ASCII string. 
        data = System.Text.Encoding.ASCII.GetString(buffer, 0, i); 

        //Display received message 
        txtRServerContent.Text = data; 
       } 

      } while (i > 0); 
     } 

클라이언트 :

 TcpClient tcpClient = new TcpClient(AddressFamily.InterNetwork); 
     await tcpClient.ConnectAsync(IPAddress.Parse("10.168.197.66"), 14400);    

     // Get a client stream for reading and writing. 
     // Stream stream = client.GetStream(); 
     NetworkStream stream = tcpClient.GetStream(); 

     // Buffer to store the response bytes. 
     byte[] data = new byte[1024]; 

     // String to store the response ASCII representation. 
     String responseData = String.Empty; 

     int count = 0; 

     while (true) 
     { 
      // Read the first batch of the TcpServer response bytes. 
      count = await stream.ReadAsync(data, 0, data.Length); 
      if (count > 0) 
      { 
       responseData = System.Text.Encoding.ASCII.GetString(data, 0, count); 

       //Dispaly responsed message 
       txtClientContent.Text = responseData; 
      } 
     } 
+0

고마워, 나는 내가 사용할 수있는 것을 보일 것이다. 한 가지 질문 만합니다. 처리되지 않은 예외도 원인 일 수 있다고 생각하지만 App에 대한 UnhandledException 이벤트를 이미 할당했습니다. 일단 나는 나의 msgbox를보고 있었지만 네트워크 케이블을 뽑지는 않았지만 내 파일 로거는 앱이 닫힐 때까지 플러시되지 않는 것처럼 보인다. – Trivalik

0

은 디버거가 연결되어있는 경우이 문제는 발생할 것으로 보인다. 지금은이 주제가 닫힙니다.