Ваша проблема может быть связана с тем, что вы не очищаете поток вывода в своем клиентском коде:
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.write(messageToServer);
, в то время как PrintWriter
был создан с autoflush = true, автозапуск вступает в силу, только если вы используете метод println
, printf
или format
(согласно javadocs ) поэтому я бы изменил ваш код на:
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.println(messageToServer);
или
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.write(messageToServer);
out.flush();
EDIT:
Хотя у меня нет опыта работы с библиотекой Firefox, мне также интересно, является ли код Javascript, который читает входные данные, неполным, и мне интересно, можно ли попробовать следующее (которое должно прочитать входные данные в 512-байтовых чанках) :
var request = '';
while (sin.available()) {
request = request + sin.read(512);
}
Кроме того, при чтении вашего ответа в Java-клиенте я бы:
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}