Lua - tcp连接打印网站的内容

时间:2015-05-01 03:15:08

标签: sockets lua

我用:

host = "www.w3.org"
file = "/TR/REC-html32.html"
c = assert(socket.connect(host, 80))
c:send("GET " .. file .. " HTTP/1.0\r\n\r\n")
contents = c:receive("*a")
print(contents)

打印网站www.w3.org/TR/REC-html32.html的内容。但是,稍后我想再次打印网站的内容,这可能与上一次有所不同,但如果我再次使用contents = c:receive("*a"),则打印nil,我必须使用上面的示例要再次打印的新内容。如何打印新内容而无需与网站建立另一个tcp连接,我的意思是保持联系并打印时间内容(每隔60秒就可以说)?

2 个答案:

答案 0 :(得分:1)

不使用TCP套接字,而是更容易使用HTTP module

local http = require("socket.http")

while(true) do
  b, c, h = http.request("http://www.w3.org/TR/REC-html32.html")
  print(b)
  --sleep(60)
end

答案 1 :(得分:0)

您不需要重新创建tcp对象;但您需要将GET请求重新发送到服务器。

因此,您需要在timer / loop中执行以下两个语句:

c:send( "GET "..file.." HTTP/1.0\r\n\r\n" )
contents = c:receive "*a"

其中c与您的代码中创建的相同。