Как распознать EOF в сокетах Java?

Я хочу признатьконец потока данных в сокетах Java. Когда я запускаю приведенный ниже код, он просто зависает и продолжает работать (он застрял на значении10).

Я также хочу, чтобы программа загружала двоичные файлы, но последний байт всегда различен, поэтому я не знаю, как остановитьпока (Прагматично).

String host = "example.com";
String path = "/";
Socket connection = new Socket(host, 80);

PrintWriter out = new PrintWriter(connection.getOutputStream());
  out.write("GET "+ path +" HTTP/1.1\r\nHost: "+ host +"\r\n\r\n");
out.flush();

int dataBuffer;
while ((dataBuffer = connection.getInputStream().read()) != -1)
  System.out.println(dataBuffer);

out.close();

Спасибо за любые подсказки.

Ответы на вопрос(2)

Ваш ответ на вопрос