我正在努力了解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"在末尾?我已经搜索了其他网站,但似乎没有足够的信息......
答案 0 :(得分:0)
所有这些都在HTTP 1.0 protocol specifications中解释。
特别阅读规范the request section:
Request-Line
以方法标记开头,后跟Request-URI
和协议版本,以CRLF
结尾。该 元素由SP
个字符分隔。不允许CR
或LF
除了最后的CRLF
序列。Request-Line = Method SP Request-URI SP HTTP-Version CRLF
SP是分隔符。 CRLF是CR(回车),后跟LF(换行符)字符。常量为listed here。
因此,在如下形成的请求中:
GET some/path/to/file.lua HTTP/1.0\r\n\r\n
你有:
GET
some/path/to/file.lua
HTTP/1.0
\r
\n
字符\r
和\n
分别代表几种编程语言中的CR和LF。实际上是相同的字符:string.char(13)
和string.char(10)
。