2016-07-12 18 views
0

UWPクライアントおよびサーバーアプリケーションを作成しようとしています。クライアントとサーバーの両方が異なるマシン上でホストされています。このリンクを使用してUWPでサーバーからクライアントにデータを送信する

Network connection with UWP Apps

私は、サーバーに接続することができましたし、クライアントからサーバに文字列を送信することができます。この作品は大丈夫です。

しかし今、質問はサーバーからクライアントにデータを送信する方法です。私は適切なサンプルを見つけることができませんでした。サーバーからクライアントにデータを送信する際に、何らかの問題が発生する可能性があります。

コードやリンクのいずれかの部分が高く評価されています。

+0

は常にサーバに接続されたクライアントですか? – Suneesh

+0

いいえクリックしてください。サーバーに接続しています。私は概念証明(POC)を開発しており、このPOCを拡張する必要があります。 私の要件は、クライアントとサーバーが異なるマシンでホストされていることです。サーバーがクライアントからデータを受信すると、すぐにクライアントに応答を返す必要があります。 – user3012974

+1

これは単純ですが、非同期ソケットを使用してサーバーに接続し、データを送信し、切断しないで、同じソケットからデータを読み取るのを待ちます。例https://msdn.microsoft.com/en-us/library/windows/apps/hh202858%28v=vs.105%29.aspx – Suneesh

答えて

0

上記のコードから、サーバーからの応答を読み取るためにConnectSocket()メソッドを変更します。

私はコードを実行していません。変更は

private async Task ConnectSocket() 
    { 
     StreamSocket socket = new StreamSocket(); 

     socket.Control.KeepAlive = false; 

     HostName host = new HostName("localhost"); 

     try 
     { 
      await socket.ConnectAsync(host, "5463"); 

      Stream streamOut = socket.OutputStream.AsStreamForWrite(); 
      StreamWriter writer = new StreamWriter(streamOut); 
      string request = "Test Self App \n"; 
      await writer.WriteLineAsync(request); 
      await writer.FlushAsync(); 
      // Code for reading 
      Stream streamIn = socket.OutputStream.AsStreamForRead(); 
      StreamReader reader = new StreamReader(streamIn); 
      char[] result = new char[reader.BaseStream.Length]; 
      await reader.ReadAsync(result, 0, (int)reader.BaseStream.Length); 
      // Your data will be in results 
      socket.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      txb_Events.Text += ex.Message; 
      //Logs.Add(ex.Message) 
     } 


    } 
+0

私はこれを自分の行いました。ご支援ありがとうございます。 – user3012974

0

を必要とすることができる。しかし、今の質問は、サーバからクライアントにデータを送信する方法です。

あなたは、サーバーとクライアント間の接続を確立するためにStreamSocketを使用しているので、クライアントアプリケーションとサーバアプリケーションの両方を含み、完全にソケット接続を維持するためにソケットアクティビティストリームソケットAPIを使用する方法を示し公式Socket activity trigger stream socket sampleがありますアプリケーションの存続期間を超えて生きています。 StreamSocketListenerServer(サーバー)のプロジェクトでは、クライアント部分にサーバーからデータを送信するために

private async void SendButton_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     DataWriter writer = new DataWriter(connectedSocket.OutputStream); 
     writer.WriteBytes(Encoding.UTF8.GetBytes(SendMessageTextBox.Text)); 
     SendMessageTextBox.Text = ""; 
     await writer.StoreAsync(); 
     writer.DetachStream(); 
     writer.Dispose(); 
    } 
    catch(Exception exception) 
    { 
     rootPage.NotifyUser(exception.Message, NotifyType.ErrorMessage); 
    } 
} 
関連する問題