Похоже, проблема в том, что вы не удалили все данные из запроса.Вы должны продолжать делать is.read()
до тех пор, пока он не вернет -1, затем закройте его.
Поскольку вы не исчерпали запрос, остаются еще байты.Сервер не может просто «перейти» к следующему запросу;это не как диск, а как лента.Сервер должен прочитать (и отбросить) все данные из текущего запроса, прежде чем он сможет достичь следующего запроса.
Без ограничения это можно использовать для атаки на сервер;таким образом, сервер будет пытаться использовать только предел, который по умолчанию составляет 64 КБ.Вы, вероятно, получаете запрос размером более 64K.
Обычно обработчик должен сначала прочитать весь запрос.Иначе как он знает, как обслуживать запрос?
Если серьезно, то если запрос не будет обработан первым, может возникнуть тупик.Клиенты обычно просты: они пишут запрос, а затем читают ответ.Если сервер записывает ответ до того, как прочитает весь запрос, клиент все еще может писать запрос.Оба пишут друг другу, но ни один не читает.Если буферы заполнены, то мы зашли в тупик, оба блокируются при записи.Обратите внимание, что для write () нет времени ожидания!