Lua NodeMCU web服务器连接错误(正在使用的地址堆栈回溯)
我想使用NodeMCU打开和关闭web服务器上的led,但每次编译时都会发生相同的错误。我是初学者,所以我需要一些帮助。我相信这个错误与函数listen()有关。可能是因为我更改了DNS,端口80无法使用 错误:Lua NodeMCU web服务器连接错误(正在使用的地址堆栈回溯),lua,webserver,esp8266,nodemcu,Lua,Webserver,Esp8266,Nodemcu,我想使用NodeMCU打开和关闭web服务器上的led,但每次编译时都会发生相同的错误。我是初学者,所以我需要一些帮助。我相信这个错误与函数listen()有关。可能是因为我更改了DNS,端口80无法使用 错误: dofile("ConectarRedeWireless.lua"); 192.168.137.57 255.255.255.0 192.168.137.1 ConectarRedeWireless.lua:13: address in use stack trac
dofile("ConectarRedeWireless.lua");
192.168.137.57 255.255.255.0 192.168.137.1
ConectarRedeWireless.lua:13: address in use
stack traceback:
[C]: in function 'listen'
ConectarRedeWireless.lua:13: in main chunk
[C]: in function 'dofile'
stdin:1: in main chunk
代码:
——科内索无线网络
wifi.setmode(wifi.STATION)
wifi.sta.config(“goncalo”,“936674888”)
打印(wifi.sta.getip())
--迪尼科斯多皮诺发光二极管
led1=1
gpio.mode(led1,gpio.OUTPUT)
--定义Web服务器
srv=net.createServer(net.TCP)
srv:监听(80,功能(连接)
连接:打开(“接收”,功能(客户端,请求)
本地buf=“”;
local u,u,method,path,vars=string.find(请求,“([A-Z]+)(.+)?(.+)HTTP”);
如果(方法==nil),则
_,方法,路径=string.find(请求,([A-Z]+)(.+)HTTP”);
结束
本地_GET={}
如果(vars~=nil),则
对于string.gmatch(vars,(%w+)=(%w+&*)do中的k,v
_获取[k]=v
结束
结束
buf=buf.“FILIPEFLOP”;
buf=buf.“ESP8266 Web服务器”;
buf=buf.“
”;
本地_on,_off=“”,“”
如果(_GET.pin==“LIGA1”),则
gpio.write(led1,gpio.HIGH);
elseif(_GET.pin==“DESLIGA1”)则
gpio.write(led1,gpio.LOW);
结束
客户:发送(buf);
客户端:close();
收集垃圾();
(完)
(完)
首先,我建议您使用正确的初始化顺序,在设置服务器之前,等待设备完全连接到WiFi。我们保持联系
srv:listen(80,function(conn)
只能为任何给定端口调用一次,因为不能在同一端口上侦听多个服务器套接字。这就是为什么您会得到
正在使用的地址
错误。我们的演示了如何在侦听之前检查srv
是否可用。您可以通过在再次侦听之前先运行srv:close()
来扩展此功能。类似如下:
sv = net.createServer(net.TCP, 30)
if sv then
sv:close()
sv:listen(80, function(conn)
-- do something
end)
end
顺便说一句,你是从哪里得到这个代码样本的?我在这里已经在堆栈溢出上见过好几次了,但是它有更多的缺陷需要纠正。这个问题解决了吗?你需要更多的反馈吗?
sv = net.createServer(net.TCP, 30)
if sv then
sv:close()
sv:listen(80, function(conn)
-- do something
end)
end