我用:
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秒就可以说)?
答案 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
与您的代码中创建的相同。