0

我正在努力理解 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”?我搜索了其他网站,但似乎没有一个提供足够的信息......

4

1 回答 1

0

这一切都在HTTP 1.0 协议规范中进行了解释。

特别阅读规范的请求部分

Request-Line方法标记开头,后跟 Request-URI和 协议版本,并以 . 结尾CRLF。元素由SP字符分隔。不允许CRLF不允许,除非在最后的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 回答