文字列の比較で奇妙な問題が発生しています。クライアントからサーバーに文字列を (を使用してバイトとしてgetBytes()
) 送信します。クライアントとサーバーの両方で-Dfile.encoding=UTF-8
.
valueOf
クライアントから受け取った文字列を列挙型に変換しようとしたときに、この問題に気付きました。文字列を印刷すると、まったく同じに見えます。しかし、 を実行するcompareTo
と、ゼロ以外の数値equals
が返され、 が返されますfalse
。
エンコードの問題だと思います。よくわかりませんが、ソケットを使用したクライアントサーバープログラミングに関しては、まだ少し初心者です。
これは私が得るものです:
Waiting for connections on port 9090
Connected to client: 127.0.0.1
received command: GetAllItems
The value is |GetAllItems| (from client)
The value is |GetAllItems| (from enum)
equals: false
私は何を間違っていますか?
アップデート
ストリームから文字列を再構成する方法は次のとおりです。おそらく、これは私が何か間違ったことをしている場所ですか?
byte[] commandBytes = new byte[1024];
in.read(commandBytes); //in is a BufferedInputReader
String command = new String(commandBytes);