I'm having a strange problem comparing strings. I send a string to my server (as bytes using getBytes()
) from the client. I've ensured that encoding is the same on the client and server by starting both of them with -Dfile.encoding=UTF-8
.
I noticed the problem when I was trying to perform a valueOf
on the string I receive from the client, to convert it into an enum. When I print out the strings, they look exactly the same. But when I perform a compareTo
, I get a non-zero number and equals
returns false
.
I'm assuming that it is an encoding problem. I'm not really sure though -- I'm still a bit of a novice when it comes to client-server programming with sockets.
This is what I get:
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
What am I doing wrong?
UPDATE
Here is how I'm reconstituting the string from the stream. Perhaps this is where I'm doing something wrong?
byte[] commandBytes = new byte[1024];
in.read(commandBytes); //in is a BufferedInputReader
String command = new String(commandBytes);