我正在尝试向某个端口发送广播数据包,但似乎代码给出了一些我无法找到修复程序的奇怪错误。 我试过使用net.socket:connect(),然后调用“send()”方法,这没有奏效,然后我说我应该使用net.socket:on('connection')和发送那里,因为我想net.socket:connect()不同步。但是,这给了一个奇怪的错误太...当尝试调用net.socket时,NodeMCU崩溃:connect()
对于此代码:
function sendBroadcastPacket()
bip = wifi.sta.getbroadcast()
srv = net.createConnection(net.UDP,0)
print('Trying to connect on: ', bip)
srv:connect('9001', bip)
srv:send("Broadcast packet from: "..NODE_ID, function(sent)
print("Broadcasted packet! "..sent)
end)
end
我收到以下错误:
PANIC: unprotected error in call to Lua API (init.lua:24: attempt to call method 'connect' (a nil value))
第24行是SRV:连接线。
之后,我试图监听连接事件首先,看看它的工作是这样:
function sendBroadcastPacket()
bip = wifi.sta.getbroadcast()
srv = net.createConnection(net.UDP,0)
print('Trying to connect on: ', bip)
srv:on('connection', function(sck, c)
sck:send("Broadcast packet from: "..NODE_ID, function(sent)
print("Broadcasted packet! "..sent)
end)
end)
srv:connect('9001', bip)
end
我收到以下错误:
PANIC: unprotected error in call to Lua API (init.lua:24: invalid callback name)
第24行是SRV: ('连接')一行。
这里似乎在发生什么?谷歌的搜索结果并不多,因为很多其他人都使用Arduino-IDE版本(顺便说一下,这仍然是nodemcu还是你需要ESP8266的不同固件?)。 我正在获取广播IP,并且它连接到AP。我没有在这里发布无线连接部分,因为它的工作原理,我用它来测试mqtt和http连接的工作。
我正在使用的版本,SDK 2.1.0(116b762)上的Lua 5.1.4,包含net模块。
这工作!非常感谢:),我真的开始失去希望,认为这是一个平台错误。 – Azurium
我知道UDP是无连接的,但并没有真正质疑nodemcu方法,因为我得到了一些谷歌搜索结果的启发,而且,看起来像某人,也许你:),只是编辑了文档wiki,并在那里注明了_This将在即将发布的版本中发生变化,以便net.createConnection将始终创建未加密的TCP连接。我使用Wayback机器来确认我不是在做梦:))。我错过了文档中的createUDPSocket部分。 再次感谢! – Azurium
不要相信大G可能带给你的来源。我们的API文档(与您的固件分支相匹配的文档)是唯一真实的来源。 –