Я пытаюсь понять сокеты в lua. Я немного застрял в клиенте: отправить (данные [, i [, j]]) как http://w3.impa.br/~diego/software/luasocket/tcp.html#send предоставляет, но я не совсем понимаю, что он на самом деле делает, и это руководство не объясняет много. Например, чтобы отправить запрос файла, мы используем c:send("GET " .. file .. " HTTP/1.0\r\n\r\n"). Почему мы должны использовать «GET» в начале и «HTTP/1.0\r\n\r\n» в конце? Я искал другие сайты, но ни один из них не показался мне достаточно информативным...
Клиент сокета Lua: функция отправки
Ответы (1)
Все это объясняется в спецификациях протокола HTTP 1.0.
Внимательно прочтите раздел запросов характеристики:
Request-Line
начинается с маркера метода, за которым следуетRequest-URI
и версия протокола, и заканчиваетсяCRLF
. Элементы разделеныSP
символами. НикакиеCR
илиLF
не допускаются, за исключением последней последовательностиCRLF
.Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Поддерживаются следующие методы:
- ПОЛУЧИТЬ
- ПОЧТА
- ГОЛОВА
СП - разделитель. CRLF — это CR (возврат каретки), за которым следуют символы LF (перевод строки). Константы перечислены здесь .
Итак, в запросе, сформированном следующим образом:
GET some/path/to/file.lua HTTP/1.0\r\n\r\n
У вас есть:
- Метод =
GET
- URI =
some/path/to/file.lua
- Версия HTTP =
HTTP/1.0
- CR =
\r
- LF =
\n
Символы \r
и \n
соответственно представляют CR и LF в нескольких языках программирования. На самом деле это те же символы, что и: string.char(13)
и string.char(10)
соответственно.
person
hjpotter92
schedule
10.10.2014