![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про принцип работы HTTP
Суслик © (2006-11-11 01:11:00)Здравствуйте!
1. Вводная.
Принимая на *стороне сервера* запрос TCP нужно быть готовым, что он прийдет не весь сразу, а частями. Это факт. Когда когда-то я писал свои тестовые сервера (в целях изучения) я применял следующий протокол:
а) мой сервер ждал 4 байта - длина сообщения.
б) после получения четырех байт - сервер читал сообщения, с учетом того, что сообщение может прийти не сразу.
2. Вопрос.
Сейчас я начал разбираться с HTTP.
Это вроде текстовый протокол. Делаю я это так - с помощью TIdTCPServer ловлю все, что мне посылает браузер.
Насколько я понял, HTTP - это чисто протокол. Я не смог заметить, что каким-то образом передается длина сообщения.
Вопрос
Как сервер HTTP понимает сколько же ему читать из сокета?
PS. Прошу прощения за ламерский вопрос :)
SergP (2006-11-12 09:54:00) [1]> [42] DVM © (11.11.06 16:26)
> CRLF - не надо называть пустой строкой. Т.к. в терминах
> Delphi это далеко не пустая строка.
Это в терминах Дельфи..., которые на данный момент к сабжу не особо имеют отношение.
Anatoly Podgoretsky (2006-11-11 16:48:00) [2]> DVM (11.11.2006 16:26:42) [42]
А серверам плевать, что там Дельфи считает и что/кто это такое.
DVM (2006-11-11 16:26:00) [3]CRLF - не надо называть пустой строкой. Т.к. в терминах Delphi это далеко не пустая строка.
Anatoly Podgoretsky (2006-11-11 14:02:00) [4]> SergP (11.11.2006 12:43:39) [39]
Я ночью много написал, но все пропало, повторять не охота.
В кратче все регламентируется RFC остальное фантазии.
Если коротко, то заголовок от данных отделяется одной пустой строкой и сообщение заканчивается точкой.
Anatoly Podgoretsky (2006-11-11 13:55:00) [5]> SergP (11.11.2006 12:43:39) [39]
> А 2 CRLF - это типа не две пустые строки?
Признак окончания пустая строка, в соответствии с RFC
и ничего более.
Конечно, нет, можно хоть десять, но только первая пустая строка является признаком, все остальные данными.
Тут фантазировать не надо, документ одназначно говорит и никаких двойных LF
SergP (2006-11-11 12:43:00) [6]> [26] Орион © (11.11.06 09:19)
> > [25] SergP © (11.11.06 06:10)
>
> нет, одна. 2 CRLF :) (а для некоторых серверов просто 2
> LF).
А 2 CRLF - это типа не две пустые строки?
Ну хорошо.Тогда:
признак окончания заголовка запроса: 1 CRLF
а признак окончания запроса: 2 CRLF
atruhin (2006-11-11 10:11:00) [7]> [37] Anatoly Podgoretsky © (11.11.06 09:57)
Еще пару раз, чтоб понятнее было.
Anatoly Podgoretsky (2006-11-11 09:57:00) [8]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [9]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [10]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [11]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [12]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [13]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [14]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [15]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [16]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [17]Удалено модератором
Anatoly Podgoretsky (2006-11-11 09:57:00) [18]Удалено модератором
Орион (2006-11-11 09:19:00) [19]> [25] SergP © (11.11.06 06:10)
нет, одна. 2 CRLF :) (а для некоторых серверов просто 2 LF).
SergP (2006-11-11 06:10:00) [20]> Т.е. - пустая строка - это признак окончания запроса?
Признак окончания запроса вроде как две пустых строки.