• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP32: как разделить интерфейсы WiFi и Ethernet для UDP (arduino)

vvk

New member
Суть вопроса в следующем:
Одновременно активны оба интерфейса (как WiFi, так и Ethernet).
На оба приходят UDP-пакеты, для обработки запущен UDP-сервер из библиотеки WiFiUDP:

WiFiUDP Udp;

Udp.beginMulticast(multicastIP, multicastPort);


Для приема вызывается функция
uint16_t packetSize = Udp.parsePacket();
и затем
Udp.read(...)

Пакет принимается правильно.

Но проблема в том, что сервер не привязан к какому-то интерфейсу, и я не знаю, пришел пакет по WiFi или по Ethernet. А ответить мне нужно по тому интерфейсу, откуда получен пакет.

Поэтому у меня такие вопросы:
1. Как можно узнать по какому интерфейсу пришел пакет?
2. Как выбрать интерфейс для отправки? (Сейчас отправку выполняю функцией Udp.write(...) )
3. Может есть библиотека, позволяющая выбирать интерфейс для сервера/клиента
 

Atom

Member
В АРП есть поле с макадресом. Два разных интерфейса - два разныз мак.
 
Сверху Снизу