2016-09-18 1 views
6

실제로 TCP/IP의 로컬 네트워크에서 굵은 클라이언트 응용 프로그램 (명령은 수정할 수 없음)에 명령을 보내는 웹 응용 프로그램 (ASP.NET MVC)에서 작동합니다. 두꺼운 클라이언트 응용 프로그램이 내 명령에 응답하거나 정보를 제공해야하므로 연결을 항상 열어야합니다. 그래서 거기가 더 나은,TCP/IP 클라이언트 측 루프 .NET

public static async void getMessage() 
     { 
      while(true) 
      { 
       // Buffer to store the response bytes. 
       Byte[] data = new Byte[100000]; 

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

       // Read the first batch of the TcpServer response bytes. 
       Int32 bytes = await stream.ReadAsync(data, 0, data.Length); 
       if (bytes == 0) continue; 
       responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); 
       Debug.Write(responseData); 

       await stream.ReadAsync(data, 0, data.Length); 
      } 
     } 

실제로 일하고, 나는 서버의 응답을 받았지만, 브라우저는 항상 "localhost를 기다리고"입니다 : 그와 같은 서버 응답을 확인하는 루프를 만들 방법은 브라우저에서 루프없이, 할 수 있습니까?

정말 고마워요!

답변

5

이것은 웹 소켓의 경우처럼 들립니다. MVC 앱에서는 일반적으로 SignalR을 사용합니다. http://www.asp.net/signalr

+0

@dperish에 시간을 내 주셔서 감사합니다. 질문이 하나 더 있습니다. 어쩌면 어리석은 웹 응용 프로그램이 인터넷에 연결되지 않은 로컬 네트워크에서만 사용되도록 서버에 "배포"될 것입니다. 신호기를 사용하는 것이 문제가 될 수 있습니까? –

+0

아니요, 인트라넷 서버에 배포 된 SignalR 패키지가있는 한 중요하지 않습니다. NuGet ('Install-Package Microsoft.AspNet.SignalR')을 통해 설치 한 경우 제대로 패키지되고 배포되어야합니다 – dperish

관련 문제