Как правильно использовать сокет, используемый клиентом HTTP после передачи запроса?Или он должен оставаться открытым (двунаправленным), пока не будет получен полный ответ?Если да, то как сервер определяет конец тела запроса?
Согласно http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4, закрытие сокета не является опцией для запроса.Это не звучит логично для меня - почему полузакрытое TCP-соединение должно быть проблемой для сервера, если клиент не пытается ничего передавать после закрытия своей половины сокета?В конце концов, клиент все еще может получать данные.
Мне кажется, что отключение части записи сокета было бы очень практичным способом сообщить серверу, что запрос завершен.http://docs.python.org/howto/sockets.html#disconnecting даже особо упоминается тот случай использования.
Если это действительно неправильный способ сделать это, какая альтернатива?Действительно ли мне всегда нужно отправлять «Content-length» или использовать фрагментированный транспорт, чтобы сервер мог правильно найти конец запроса?Как это работает для запросов с неизвестной длиной тела?