2017-03-10 5 views
-1

Ich spielte gerade mit dem Netzwerk in C# herum und grundsätzlich möchte ich, wenn ein Client die Meldung "shutdown" an den Server sendet, einen vollständigen Shutdown auslösen. Auf der Serverseite wird meine "if" -Anweisung jedoch niemals ausgeführt und ich weiß nicht warum; Hilfe würde geschätzt (Ich bin nicht, die auf C# fortgeschrittene lol)C# Wenn die Anweisung nicht ausgeführt wird

Server Side:

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); 
     } 

Client Side:

 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

Geben Sie einen Haltepunkt und überprüfen Sie, was ist der Wert für "String-Daten"? –

+1

Es ist unmöglich, ohne eine gute [mcve] zu wissen, die das Problem zuverlässig reproduziert. Aber ich würde sagen, die Chancen liegen darin, dass, wie so ziemlich jeder, der sich mit dem Schreiben von Netzwerk-Code beschäftigt, ohne ihn zuerst zu studieren, nichts getan hat, um die vom Client gesendeten Daten abzugrenzen. Selbst wenn der Client-Code '' shutdown '' sendet, gibt es keine Garantie, dass der Server die gesamte Zeichenfolge für sich alleine erhält. –

Antwort

0

Gefunden das Problem .. sieht aus wie Ich habe auch ein ">" Symbol in der Nachricht über den Client gesendet und ich habe nur überprüft, ob der eingehende Text "heruntergefahren" war.

Verwandte Themen