Я использую NodeMCU (с ESP8266-E) с обновленной прошивкой. Все основные команды работают отлично, но есть одна проблема.ESP8266, NodeMCU, soft AP - UDP-серверная мягкая AP, независимая точка доступа
Я хотел создать независимую точку доступа, которая может иметь поведение, такое как UDP-сервер. Это означает, что без прямого подключения к другим точкам доступа. Простой UDP-сервер, такой как soft AP.
Я последовал за следующие действия:
- Я загрузил новую прошивку на NodeMCU.
- Я загрузил ESPlorer для лучшей работы с NodeMCU.
- Я загрузил исходный код ниже.
- Я подключился к точке доступа NodeMCU на своем рабочем столе.
- Я отправил некоторые строки в NodeMCU с помощью клиентской программы Java UDP.
- Я просмотрел сообщения на ESPlorer.
- NodeMCU не получил таких строк.
-
print("ESP8266 Server")
wifi.setmode(wifi.STATIONAP);
wifi.ap.config({ssid="test",pwd="12345678"});
print("Server IP Address:",wifi.ap.getip())
-- 30s timeout for an inactive client
srv = net.createServer(net.UDP, 30)
-- server listens on 5000, if data received, print data to console
srv:listen(5000, function(sk)
sk:on("receive", function(sck, data)
print("received: " .. data)
end)
sk:on("connection", function(s)
print("connection established")
end)
end)
Когда я попытался отправить сообщение с помощью приложения Java, не было никаких изменений в ESPlorer. Даже когда я пытался отправить сообщение с помощью программы Hercules (отличная программа для TCP, UDP-связи).
Возможно, это будет неправильный IP-адрес. Я использую IP-адрес AP, а не IP-адрес станции.
Другими словами, я использую этот адрес: wifi.ap.getip()
, а не этот адрес wifi.sta.getip()
для подключения к UDP-серверу. Но sta.getip()
возвращает нулевой объект. На самом деле я не знаю.
Буду рад за любой совет.
спасибо.
Я исправил свой вопрос. Спасибо – Luke
Большое спасибо. Я узнал, что, наконец, он отлично работает. Причина, по которой это не работает, было неправильным пониманием протокола UDP. Когда я пытался отправить строку, используя Hercules, ничего не получилось. Но после отправки большего количества строк/сообщений я узнал, что UDP-сервер получил все правильно. Другими словами, протокол UDP является ненадежным протоколом: – Luke
«Протокол UDP - ненадежный протокол» - о да, [очень сильно] (https://en.wikipedia.org/wiki/User_Datagram_Protocol#Reliability_and_congestion_control_solutions). –