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