Вы отправляете байтовый массив и читаете только один байт.
Вы должны читать, используя цикл, как показано ниже:
byte[] arr = new byte[1024];
while (in.read(arr) >= 0) {
// do something with the data.
}
Это будет работать, но все же это не то, что вам действительно нужно. Действительно, вы работаете со строками, но затем вручную преобразуете строку в байтовый массив, а затем читаете байты, чтобы вручную снова преобразовать их в строку?
Вместо этого вы должны использовать PrintWriter для записи строк:
PrintWriter writer = new PrintWriter(new OutputStreamWriter(out));
writer.write(str);
, а затем используйте BufferedReader при чтении данных.
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = reader.readLine();