![]() |
HTTP 1.1,вопрос
1.1 в отличии от 1.0 незакрывает сокет после ответа на запрос.Так как тогда в 1.1 отловить момент когда нужно прекращать прием данных?
|
2 _nic ну там много различий. Тут всё делов в двух вещах:
поле Connect каторое ты передаешь. Там ты можешь сказать Keep-alive или close Первое типа остаться на линии, а второе - типа чтобы сервак закрыл соединение после отправки данных. Вторая фишка - сервак отвечает и в его ответе почти всегда есть Content-Length в котором написано сколько данных он должен передать тебе. Вот и считывай это кол-во ) |
Если в отдельных случаях с блоками осиливать вручную лень - лучше юзать 1.0. В реальных условиях keep-alive редко, когда может пригодиться.
|
keep-alive юзается когда в один контекст посылаются несколько последовательных запросов. Такое любят делать с проксями браузеры типа FF.
|
slesh, что тогда означает поле Keep-Alive: 300, и почему в большинстве случаев именно 300, а не какое-нибудь другое значение?
|
Keep-Alive. Заголовок Keep-Alive содержит значение, которое означает в течение какого времени в секундах будет удерживаться соединение. Этот заголовок следует отправлять только в том случае, если заголовок Connection содержит значение keep-alive.
Поддерживается только для протокола HTTP версии 1.1. В нашем примере этот заголовок содержит значение 300, т.е. браузер сообщает серверу, что намерен удерживать постоянное соединение с сервером в течение 300 секунд. |
wildshaman, спасибо большое, теперь понятно.
|
slesh,
Броузеры - да, смысл - в редких случаях актуален. |
Слушайте, меня интересует следующие:
1) Как реализовать работу программы, если используешь Keep-Alive, но при этом сервак не передал значение Content-Length (количество отправленных байтов)? 2) Если принял все данные, как реализовать паузу (те же 300 сек.), оставаясь на линии, но при том, что бы программа не зависала от ожидания? |
1)
а) 0D 0A (в отсутствии content-length) б) читать блоки, пока блок не станет меньше его размера (в отсутствии content-length) 2) - Буфер - Три процедуры (открытие-коннект, работа с буфером, закрытие) - Thread |
dvion, что ты имеешь здесь ввиду:
Цитата:
Цитата:
|
Keep-Alive - это поле указывает на не разрываное соединение, напиример "Connection: kerep-alive". и период соединения: "Keep-alvive: 300" а ваще найдите статью на википедии про HTTP - заголовки ))) там есть все))) особенно про Referer и User-Agent)
|
Chrome~,
Цитата:
Цитата:
Может скинуть самую успешную, на мой взгляд, реализацию этих дел? Собсно - вот: http://www.ararat.cz/synapse/ Лучше - не видал! И посмотреть в сорцах можно всё, что требуется) |
dvion, ну просто кладезь ценной инфы! очень хорошо. спасибо, за ссыль.
|
Гм а что есть сервера которые игнорируют "Connection : Close" ?
|
| Время: 07:07 |