2017-03-10 15 views
-1

C#でネットワーキングをしていましたが、基本的にはクライアントが「シャットダウン」というメッセージをサーバーに送信すると完全シャットダウンが開始されます。しかし、サーバ側では、「if」文が実行されることはなく、理由はわかりません。C#If文が実行されない

Console.Title = "RemoteControl Server v1.0"; 
     IPAddress ip = IPAddress.Parse("127.0.0.1"); 
     TcpListener listener = new TcpListener(ip, 8080); 
     Console.WriteLine("Server started!"); 
     Console.WriteLine("Listening for client connection on port 8080.."); 

     Console.Clear(); 

     listener.Start(); 
     TcpClient client = listener.AcceptTcpClient(); 
     Console.WriteLine("Client connected from: " + client.Client.RemoteEndPoint); 
     NetworkStream stream = client.GetStream(); 

     while (true) 
     { 
      byte[] buffer = new byte[client.ReceiveBufferSize]; 
      int bytesRead = stream.Read(buffer, 0, client.ReceiveBufferSize); 

      string data = Encoding.ASCII.GetString(buffer, 0, bytesRead); 

      // THIS BIT DOESN'T GET EXECUTED 

      if (data == "shutdown") 
      { 
       Console.WriteLine("Shutdown command acknowledged."); 
       // do stuff.. 
      } 
      Console.WriteLine(data); 
     } 

クライアント側:ヘルプはいただければ幸い

サーバー側(私はC#の大爆笑で進行していないよ)

 Console.Title = "RemoteControl Client v1.0"; 

     Console.WriteLine("Connecting to server.."); 
     try 
     { 
      TcpClient client = new TcpClient("127.0.0.1", 8080); 
      NetworkStream stream = client.GetStream(); 
      Console.WriteLine("Connected!"); 

      while (true) 
      { 
       Console.Write("> "); 
       byte[] msg = ASCIIEncoding.ASCII.GetBytes("> " + Console.ReadLine()); 
       stream.Write(msg, 0, msg.Length); 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.Clear(); 
      Console.WriteLine("Couldn't connect to server! Stacktrace:"); 
      Console.WriteLine(ex.StackTrace); 
      Console.WriteLine(); 
      Console.WriteLine("Press any key to continue.."); 
      Console.ReadKey(); 
     } 
+0

ブレークポイントを指定し、「文字列データ」の値が何かを確認しますか? –

+1

問題を確実に再現する良い[mcve]がなければ、確かに分かりません。しかし、私は、それが最初のことを勉強せずにネットワーキングコードを書くことに没頭した皆のように、あなたがクライアントから送られたデータを区切ることは何もしていないからです。クライアントコードが ''シャットダウン ''を送信しても、サーバがその文字列全体をすべて受け取るという保証はありません。 –

答えて

0

問題を発見..ように見えます私はクライアントからメッセージに ">"記号も送っていましたが、着信テキストが「シャットダウン」であるかどうかを確認していました。

関連する問題