本文是自己闲暇之余用来学习lua的小笔记,篇幅比较短,有涉及到的例如HTTP网络协议,不细说。
本文演示的是通过HTTP 下载个远程文件,需要用到LuaSocket 库。要下载一个文件,必须先打开一个到网点的链接,然后发送下载该文件的请求,并接收保存数据块,最后关闭链接。
首先,先加载luaSocket库
require "socket"
2.定义主机和下载文件名
host = "www.w3.org"
file = "/TR/REC-html32.html"
3.打开tcp链接,端口80
c = assert(socket.connect(host,80))
这步返回socket编号c
4.接下来就用c 来发送请求
c:send("GET "..file.." HTTP/1.0\r\n\r\n")
5.接收数据
while true do
--这里设定每次接收1k的数据
local s,status,partial = c:receive(1024)
--输出到标准io
io.write(s or partial);
if status == "closed" then
break
end
end
这个下载流程就已经结束了,下面是一个完整的代码可运行
require "socket"
host = "www.w3.org"
function download(host,file)
local f = io.open("test.html","w+")
local c = assert(socket.connect(host,80));
c:send("GET "..file.." HTTP/1.0\r\n\r\n")
while true do
local s,status,partial = c:receive(1024);
f:write(s or partial)
if status == "closed" then
break
end
end
c:close()
f:close()
end
download(host,"/TR/REC-html32.html")附上效果,我用的编辑器是SciTE
下载到同级目录(默认)
用浏览器打开
这篇短文是作者学习Lua的笔记,通过LuaSocket库实现HTTP下载远程文件。文章详细介绍了如何加载库、定义主机和文件名、建立TCP连接、发送请求以及接收和保存数据,提供了一个可运行的完整代码示例。
16万+





