DataInputStream.readUTF
ожидает необычно странный формат сообщения. Первые два байта, которые он читает, интерпретируются как длина строки для чтения в двоичном формате с прямым порядком байтов. Затем следует странная нестандартная кодировка текста, похожая, но несовместимая с UTF-8. Скорее всего, вам следует , а не использовать DataInputStream.readUTF
для чтения данных в программе, если только вы не использовали его аналог DataOutputStream.writeUTF
для записи в первую очередь.
На основании ваших комментариев Похоже, ваш протокол связи основан на строках текста. Для чтения строк текста вы можете использовать, например, класс BufferedReader
.
BufferedReader handshake = new BufferedReader(new InputStreamReader(client.getInputStream(), StandardCharsets.UTF_8));
String handshakePure = handshake.readLine();