Я пытаюсь написать код на OSX в c (может также использовать объектно-с, если проще), чтобы определить, включена ли многоадресная рассылка на текущем компьютере (к маршрутизатору подключен аппарат). Для этого я пытаюсь выполнить следующие шаги:LAN multicast включен или нет?
- Открыть порт и отправить данные по многоадресной рассылке.
- Слушайте ответы на все активные адаптеры.
- Отфильтруйте адаптер «loopback».
- Если ответов нет, многоадресная рассылка, скорее всего, отключена.
Являясь новичком в сетевом программировании, я не понимаю, как получить ответ от любых активных адаптеров, отправив случайные данные, если только я не установил программное обеспечение на прослушиваемых компьютерах. Существует ли определенный многоадресный IP-адрес, который всегда будет вызывать ответ, или есть лучший способ сделать это?
Идея состоит в том, чтобы определить, включен ли маршрутизатор, к которому подключен аппарат, с многоадресной рассылкой.Одна из идей заключалась в том, чтобы открыть сокет для отправки некоторых данных и открыть сокет на том же компьютере, чтобы прослушивать один и тот же многоадресный адрес, чтобы узнать, получает ли он сообщение, которое было отправлено. Может быть, есть способ просмотреть таблицы маршрутизации, которые достигнут того же результата? – trueinViso
Определение того, проходит ли маршрутизатор многоадресными дейтаграммами между доменами конфликтов, является совсем другим вопросом. Я не знаю, как это сделать в общем случае. Вы можете спросить об этом как о новом вопросе. Я могу вам сказать, что маршрутизатор не будет повторять многоадресную датаграмму на сегменте, из которого он пришел; в противном случае другие машины получили бы две копии дейтаграммы. Я уверен, что локальный стек IP обрабатывает локальную доставку. – Fred