NodeMCU 向所有客户端广播
NodeMCU broadcast to all clients
我想向连接到我的 esp8266 12f 接入点的所有客户端广播请求
我用它来为每个客户端创建一个连接,这意味着如果有 3 个客户端,它将创建 3 个连接。
for mac,ip in pairs(wifi.ap.getclient()) do
srv= net.createConnection(net.TCP, 0)
srv:on("receive", function(client, b_response) srv:close() collectgarbage() end)
srv:on("connection", function(client, b_request) client:send(request) end)
srv:connect(80, ip)
end
我尝试了广播 ip srv:connect(80, "255.255.255.255")
但没有发送任何内容
问题:-
我使用的是每个 srv
都会覆盖之前的 srv
所以如果它被延迟我无法得到响应,即使如此我可以用不同的名称命名每个 srv
名称如 srv_1
、srv_2
、srv_3
但这会占用太多内存。
我想要什么
只创建一个连接?
您的代码使用的是 TCP,它本质上是一个单一连接的点对点协议。没有 "broadcast" TCP 连接这样的东西。 TCP 使用广播根本不起作用。这就好比以车为船。
如果您要发送少量信息,您可以尝试使用 UDP。缺点是 UDP 不可靠——你不能确定你的消息是否收到了——你需要更多的代码来接收响应,如果你想要的话,你需要建立一个可靠性机制(重传如果没有收到答案,检测重传以防答案被丢弃)如果你关心的话。
我建议您查看 MQTT 协议 - 它旨在简化与多个客户端的通信。它是轻量级的,MQTT 客户端 运行 在 NodeMCU 和 Arduino 处理器上运行良好。有 an MQTT client built into NodeMCU's LUA implementation.
缺点是您需要一个 MQTT 代理,您的所有 NodeMCU 都将连接到该代理。经纪人通常 运行 在功能更强大的处理器上(Raspberry Pi 是一个不错的选择)或在外部互联网上(Adafruit 在 https://io.adafruit.com/), although there are some implementations that run on an ESP8266.
提供经纪人
我想向连接到我的 esp8266 12f 接入点的所有客户端广播请求
我用它来为每个客户端创建一个连接,这意味着如果有 3 个客户端,它将创建 3 个连接。
for mac,ip in pairs(wifi.ap.getclient()) do
srv= net.createConnection(net.TCP, 0)
srv:on("receive", function(client, b_response) srv:close() collectgarbage() end)
srv:on("connection", function(client, b_request) client:send(request) end)
srv:connect(80, ip)
end
我尝试了广播 ip srv:connect(80, "255.255.255.255")
但没有发送任何内容
问题:-
我使用的是每个 srv
都会覆盖之前的 srv
所以如果它被延迟我无法得到响应,即使如此我可以用不同的名称命名每个 srv
名称如 srv_1
、srv_2
、srv_3
但这会占用太多内存。
我想要什么
只创建一个连接?
您的代码使用的是 TCP,它本质上是一个单一连接的点对点协议。没有 "broadcast" TCP 连接这样的东西。 TCP 使用广播根本不起作用。这就好比以车为船。
如果您要发送少量信息,您可以尝试使用 UDP。缺点是 UDP 不可靠——你不能确定你的消息是否收到了——你需要更多的代码来接收响应,如果你想要的话,你需要建立一个可靠性机制(重传如果没有收到答案,检测重传以防答案被丢弃)如果你关心的话。
我建议您查看 MQTT 协议 - 它旨在简化与多个客户端的通信。它是轻量级的,MQTT 客户端 运行 在 NodeMCU 和 Arduino 处理器上运行良好。有 an MQTT client built into NodeMCU's LUA implementation.
缺点是您需要一个 MQTT 代理,您的所有 NodeMCU 都将连接到该代理。经纪人通常 运行 在功能更强大的处理器上(Raspberry Pi 是一个不错的选择)或在外部互联网上(Adafruit 在 https://io.adafruit.com/), although there are some implementations that run on an ESP8266.
提供经纪人