Я хочу передать запрос всем клиентам, подключенным к моей точке доступа 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, который по своей сути является протоколом точка-точка с одним подключением. Не существует такой вещи, как "широковещательное" TCP-соединение. TCP просто не работает с широковещательной рассылкой. Это все равно, что пытаться использовать машину как лодку.
Если вы отправляете небольшой объем информации, вы можете попробовать UDP. Недостатки заключаются в том, что UDP ненадежен - вы не можете быть уверены, что ваше сообщение было получено - и вам понадобится намного больше кода для получения ответа, если вы этого хотите, и вам нужно будет создать механизм надежности (повторная передача если ответ не получен, обнаруживайте повторные передачи в случае, если ответ был отброшен), если вам это небезразлично.
Я бы порекомендовал вам проверить протокол MQTT - он разработан, чтобы упростить общение с несколькими клиентами. Он легкий, и клиенты MQTT хорошо работают на процессорах NodeMCU и Arduino. Есть клиент MQTT, встроенный в реализацию LUA NodeMCU.
Обратной стороной является то, что вам понадобится брокер MQTT, к которому будут подключаться все ваши NodeMCU. Брокер обычно запускается на более мощном процессоре (Raspberry Pi - хороший выбор) или извне в Интернете (Adafruit предлагает брокера по адресу https://io.adafruit.com/), хотя есть некоторые реализации, которые работают на ESP8266.