ESP8266 — Как получить многоадресный пакет UDP?
Как я могу получать многоадресные пакеты udp в ESP8266? У меня есть этот фрагмент кода:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char* ssid = "my_wifi_ssid";
const char* password = "my_wifi_password";
WiFiUDP Udp;
unsigned int multicastPort = 5683; // локальный порт для прослушивания
IPAddress multicastIP(224,0,1,187);
void setup(){
Serial.begin(115200);
Serial.println();
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("connected");
Udp.beginMulticast(WiFi.localIP(), multicastIP, multicastPort);
Serial.printf("Now listening at IP %s and %s, UDP port %d\n", WiFi.localIP().toString().c_str(), multicastIP.toString().c_str(), multicastPort);
}
void loop(){
int packetSize = Udp.parsePacket();
if (packetSize){
Serial.println("RECEIVED!");
}
}
Я написал его в соответствии с этой документацией и это дополнение к добавлению многоадресной рассылки.
Он просто настроил сервер на прослушивание порта 5683.
Он печатает что-то вроде:
Теперь прослушиваем IP 192.168.1.6 и 224.0.1.187, порт UDP 5683
Но если я отправляю пакет UDP на 224.0.1.187:5683 (например, через приложение отправителя пакетов), он не печатает сообщение «ПОЛУЧЕНО!» (что должно быть, посмотрите в функции цикла). Почему ESP8266 ничего не получает? Странно то, что когда я отправляю пакет на 192.168.1.6:5683 (его локальный IP-адрес), он печатает это сообщение («ПОЛУЧЕНО!»).
Почему это работает только для локального сообщения, а не для мультикаста??
Спасибо за каждую помощь! :)
PS: этот совет мне не помог...
@Petr Marek, 👍1
1 ответ
Думаю, вам нужно позвонить
Udp.begin(multicastPort);
непосредственно перед звонком
Udp.beginMulticast(WiFi.localIP(), multicastIP, multicastPort);
По крайней мере, это помогло мне.
- Каков наилучший способ инициализации Wi-Fi-связи между двумя устройствами (получить IP-адрес)?
- Несколько клиентских серверов через Wi-Fi
- Ошибка при загрузке «Произошла фатальная ошибка esptool.py: тайм-аут записи»
- ESP8266 TCP-соединение WiFiClient проблема
- Обнаружение ESP8266 в сети
- ESP8266 отправляет TCP HEX-пакет из 4 символов
- esp_now.h: нет такого файла или каталога
- Ошибка при загрузке кода в esp8266 через arduino (FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error)))