我正在努力理解 lua 中的套接字。我有点卡在 client:send(data [, 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”?我搜索了其他网站,但似乎没有一个提供足够的信息......
1222 次
1 回答
0
这一切都在HTTP 1.0 协议规范中进行了解释。
特别阅读规范的请求部分:
以
Request-Line
方法标记开头,后跟Request-URI
和 协议版本,并以 . 结尾CRLF
。元素由SP
字符分隔。不允许CR
或LF
不允许,除非在最后的CRLF
序列中。Request-Line = Method SP Request-URI SP HTTP-Version CRLF
支持以下方法:
- 得到
- 邮政
- 头
SP 是分隔符。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
- 铬=
\r
- 低频 =
\n
字符\r
和\n
分别代表几种编程语言中的 CR 和 LF。它们实际上是相同的字符:string.char(13)
和string.char(10)
分别。
于 2014-10-10T04:27:55.810 回答