Lua套接字客户端:发送功能

时间:2014-10-10 04:09:46

标签: sockets tcp lua httprequest http-1.0

我正在努力了解lua中的套接字。我有点陷入客户端:发送(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"在末尾?我已经搜索了其他网站,但似乎没有足够的信息......

1 个答案:

答案 0 :(得分:0)

所有这些都在HTTP 1.0 protocol specifications中解释。

特别阅读规范the request section

  

Request-Line以方法标记开头,后跟   Request-URI和协议版本,以CRLF结尾。该   元素由SP个字符分隔。不允许CRLF   除了最后的CRLF序列。

Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

following methods supported

  • GET
  • POST
  • HEAD

SP是分隔符。 CRLF是CR(回车),后跟LF(换行符)字符。常量为listed here

因此,在如下形成的请求中:

GET some/path/to/file.lua HTTP/1.0\r\n\r\n

你有:

  • Method = 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)