Esp-8266 Nodemcu Lua 获取 Web 和 UDP 服务器
2017-7-12 5:17:49
收藏:0
阅读:80
评论:0
如果我从“获取部分”删除注释,则会收到以下错误: PANIC: 调用 Lua API(内存不足)时未受保护的错误 PANIC: 调用 Lua API(字符串值)时未受保护的错误
如果我单独运行 2 个脚本,则不会报错 “获取部分”是下载脚本选项,如果存在于 Web 服务器中,则会下载(以远程升级 Lua 脚本)
这是为了我的 Windows 盾牌。哪里错了?
-- 升级 Web 服务器
WEBSRV="192.168.1.101" -- 例如,Fenix Web 服务器是免费的,也很好
-- 下载新脚本
--conn1 = net.createConnection(net.TCP, 0)
--conn1:on("receive", function(conn1, payload)
-- print(payload)
-- payloadOffset = string.find(payload, "--CODE") -- 要上传的脚本必须以此开始,这将在下载时自动删除
-- if (payloadOffset) then -- 如果存在有效文件,则删除旧文件并写入新文件
-- file.remove("code.lua"); file.open("code.lua", "w+")
-- file.write(string.sub(payload, payloadOffset)) file.flush() payloadFound = true
-- conn1:close()
-- end
--end)
--conn1:on("connection", function(cn1, answer)
-- cn1:send("GET /code.lua HTTP/1.1\r\n"
-- .. "Host: " .. WEBSRV .. "\r\n"
-- .. "Connection: close\r\nAccept: */*\r\n\r\n")
--end)
--conn1:connect(80, WEBSRV)
-- 服务器 UDP
s = net.createServer(net.UDP)
s:on("receive", function(s, pl)
print("命令接收")
tmr.alarm(0, 20000, 1, function()
print("UDP 计时器")
end)
if (pl == "SU") then
print("UDPSU")
elseif (pl == "GIU") then
print("UDPGIU")
end
end)
s:listen(5000)
-- 服务器 TCP
srv = net.createServer(net.TCP)
srv:listen(80, function(conn)
conn:on("receive", function(client, request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if (method == nil) then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil) then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
tmr.alarm(0, 20000, 1, function()
print("计时器")
tmr.stop(0)
end)
end
buf = buf .. "HTTP/1.1 200 OK\r\n Content-Type: text/html\r\n\r\n <!DOCTYPE html><html><head><meta name='viewport' content='width=device-width, initial-scale=1' />"
buf = buf .. "<title>Tapparella sala piccola</title>"
buf = buf .. "</head><body>"
buf = buf .. "<p align='center'><b>Tapparelle sala piccola</b><br>";
buf = buf .. "<a href=\'?pin=SU\'><button>SU</button></a> <a href=\'?pin=GIU\'><button>GIU</button></a> <a href=\'?pin=STOP\'><button>STOP</button></a></p>";
buf = buf .. "</body></HTML>\r\n";
local _on, _off = "", ""
if (_GET.pin == "SU") then
print("SU")
elseif (_GET.pin == "GIU") then
print("GIU")
elseif (_GET.pin == "STOP") then
print("STOP")
end
client:send(buf);
client:close();
collectgarbage();
end)
end)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
