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();
}
Geben Sie einen Haltepunkt und überprüfen Sie, was ist der Wert für "String-Daten"? –
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. –