Вы отправляете запрос HTTP / 1.1, который по умолчанию включает поддержку активности HTTP. Это означает, что сервер может оставить TCP-соединение открытым после отправки ответа, чтобы принимать больше запросов от клиента. Вместо этого ваш код предполагает, что сервер закроет соединение после завершения ответа, явно ожидая, что readline
вернет null
. Но так как сервер не закроет соединение (или только после некоторого длительного времени ожидания), readline
просто заблокируется.
Чтобы исправить это, используйте вместо этого HTTP / 1.0 (по умолчанию keep-alive отключен) HTTP / 1.1 или явно указать серверу, что больше запросов не будет отправлено, добавив заголовок Connection: close
.
Обратите внимание, что в целом HTTP намного сложнее, чем вы думаете, если вы только что видели несколько примеров. Проблема, с которой вы сталкиваетесь в своем вопросе, - это лишь проблеск в другие проблемы, с которыми вы столкнетесь, продолжая этот путь. Если вы действительно хотите реализовать свою собственную обработку HTTP вместо использования установленных библиотек, изучите действующий стандарт, а не просто предполагайте конкретное c поведение.