Lua - tcp连接打印网站内容

我使用:

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 秒打印一次,例如)?

点赞
用户1009479
用户1009479

使用HTTP模块比使用TCP套接字更简单:

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
2015-05-01 04:02:49
用户1190388
用户1190388

你不需要重新创建 tcp 对象;但是你确实需要重新发送 GET 请求给服务器。

因此,在你的计时器/循环中,你需要执行以下两个语句:

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

其中 c 是你在代码中创建的相同对象。

2015-05-01 05:05:18