私は C# で小さなソケット アプリケーションを作成しました。このアプリケーションは、起動時にプログラムの現在のバージョンをチェックします。現在、このテスト プログラムでは、すべてが機能します。サーバーから文字列を送信すると、クライアントに適切に表示されます。 、しかし、その文字列で if ステートメントを使用しようとすると、機能しません。例:
public void rcv(NetworkStream ns, TcpClient clientSocket)
{
on = false;
//sending some random string so the server will respond
Byte[] sendBytes = Encoding.ASCII.GetBytes("bla");
ns.Write(sendBytes, 0, sendBytes.Length);
//receiving server response
byte[] bytes = new byte[clientSocket.ReceiveBufferSize];
int bytesread = clientSocket.ReceiveBufferSize;
ns.Read(bytes, 0, bytesread);
//received response, now encoding it to a string from a byte array
string returndata =Encoding.ASCII.GetString(bytes);
ver = Convert.ToString(returndata);
//MessageBox.Show("ver\n" + ver);
//MessageBox.Show("return\n" + returndata);
on = true;
if (ver== "2.0.1")
{
MessageBox.Show("iahsd");
}
}
ご覧のとおり、サーバーから送信されているテスト文字列「2.0.1」は、テスト用に入力したラベル、メッセージボックス、およびテキストボックスに正しく表示されます。しかし、クラスの最後のifブランチはそれを受け入れずにスキップします。elseステートメントを入れると、そこにスキップします。
私と私の友人が考えることができるすべてを試し、エンコーディングを変更してみました、別の文字列を送信しました..
クライアントの完全なコード: http://pastebin.com/bQPghvAH