Вы должны явно указать, в какой кодировке вы ожидаете входящие данные, как на стороне клиента, так и на стороне сервера. Это особенно важно делать при взаимодействии между различными платформами / языками.
Но, конечно, проблема не в том, что ваша строка создается с кучей непечатных символов, потому что вы выделили ее для всего массива байтов:
byte[] buffer = new byte[100];
new String(buffer);
Предположительно, буфер не полностью заполнен после того, как вы прочитали в него данные, и значения по умолчанию в нем преобразуются в вашей строке в непечатаемые символы. Вы можете проверить это, напечатав длину строки, которую вы создали, вы найдете, что она больше 1
.
У вас есть два средства - либо trim()
String перед сравнением его значения, либо отслеживание количества прочитанных фактических байтов и создание нового байтового массива правильной длины (до создания вашей String).