Исправить проблему блокировки при попытке проанализировать HTTP-запрос в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Исправить проблему блокировки при попытке проанализировать HTTP-запрос в Java

Сообщение Anonymous »

Я пытаюсь разобрать HTTP-запросы ради развлечения, но сейчас у меня застряло, потому что метод, который я использую, блокируется до тех пор, пока не будет получен ввод.

Код: Выделить всё

byte[] buffer = new byte[1024];
while (!request.isDone()) {
int n = input.read(buffer);

if (n == -1) {
break;
}
request.parseRequest(buffer, n);
}
return request;
Я пытаюсь прочитать данные в буфере и проанализировать запрос до тех пор, пока он не будет выполнен. У меня есть небольшой класс, который создает ServerSocket, куда я отправляю простой запрос Curl, например Curl -v http://localhost:5000/hello. Когда мой буфер имеет гораздо меньший размер, например 8 байт, запрос читается частями и анализируется правильно. Но когда мой буфер намного больше и может прочитать весь запрос за один раз, анализируется только строка запроса. Затем приведенный выше цикл возвращается и блокируется на третьей строке, где его нужно прочитать. Но curl поддерживает соединение, и моя программа просто ожидает ввода, который так и не был отправлен. Есть ли жизнеспособное решение моей проблемы, кроме поиска неблокирующего сокета в Java?

Подробнее здесь: https://stackoverflow.com/questions/798 ... st-in-java

Вернуться в «JAVA»