Исправить проблему блокировки при попытке проанализировать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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