2013-08-08 2 views
0

Я пытаюсь написать код на OSX в c (может также использовать объектно-с, если проще), чтобы определить, включена ли многоадресная рассылка на текущем компьютере (к маршрутизатору подключен аппарат). Для этого я пытаюсь выполнить следующие шаги:LAN multicast включен или нет?

  1. Открыть порт и отправить данные по многоадресной рассылке.
  2. Слушайте ответы на все активные адаптеры.
  3. Отфильтруйте адаптер «loopback».
  4. Если ответов нет, многоадресная рассылка, скорее всего, отключена.

Являясь новичком в сетевом программировании, я не понимаю, как получить ответ от любых активных адаптеров, отправив случайные данные, если только я не установил программное обеспечение на прослушиваемых компьютерах. Существует ли определенный многоадресный IP-адрес, который всегда будет вызывать ответ, или есть лучший способ сделать это?

ответ

1

Чтобы определить, активен ли IP-адрес многоадресной рассылки (что, на мой взгляд, означает «многоадресная рассылка включена»), посмотрите таблицу маршрутизации и посмотрите, найдете ли вы один или несколько IP-адресов v4 в диапазоне 224.0 .0,0 до 239,2555.255.255.

+0

Идея состоит в том, чтобы определить, включен ли маршрутизатор, к которому подключен аппарат, с многоадресной рассылкой.Одна из идей заключалась в том, чтобы открыть сокет для отправки некоторых данных и открыть сокет на том же компьютере, чтобы прослушивать один и тот же многоадресный адрес, чтобы узнать, получает ли он сообщение, которое было отправлено. Может быть, есть способ просмотреть таблицы маршрутизации, которые достигнут того же результата? – trueinViso

+1

Определение того, проходит ли маршрутизатор многоадресными дейтаграммами между доменами конфликтов, является совсем другим вопросом. Я не знаю, как это сделать в общем случае. Вы можете спросить об этом как о новом вопросе. Я могу вам сказать, что маршрутизатор не будет повторять многоадресную датаграмму на сегменте, из которого он пришел; в противном случае другие машины получили бы две копии дейтаграммы. Я уверен, что локальный стек IP обрабатывает локальную доставку. – Fred

-1

Multicast реализован DHCP, который не является вашим локальным компьютером. DHCP выделяет адреса, которые соответствуют нескольким клиентам, которые подключены к этому DHCP-серверу. Когда вы создаете многоадресное сообщение, вы отправляете его на этот DHCP-сервер, который затем берет пакет, находит клиентов, которые сопоставлены этому многоадресному адресу, а затем отправляет их в специальный пакет, который автоматически дублирует маршрутизаторы (так что если у вас есть 2 люди, входящие в группу, подключенные к 1 маршрутизатору, и что маршрутизатор подключен к другому маршрутизатору (называемому маршрутизатором 2), маршрутизатор 2 не отправит два пакета, он отправит один, а затем маршрутизатор 1 отправит две копии своим клиентам. Цель этого - ускорить время доставки и не отправлять повторяющиеся данные). Что касается клиентов, клиенты не «настроены», чтобы разрешить многоадресную рассылку, а маршрутизатор устанавливает их, а остальные прозрачны для клиента. То, как вам нужно будет узнать, подключен ли клиент к группе многоадресной рассылки, - проверить, создал ли DHCP-сервер группу многоадресной рассылки, а затем найти имена компьютеров из IP-адресов, которые отображаются в группу многоадресной рассылки.

При прослушивании всех активных адаптеров вы не получите ничего, кроме пакетов, которые не собираются сообщать вам, является ли его частью многоадресной сети, поскольку они будут выглядеть как каждый другой пакет (поскольку маршрутизатор изменит адрес многоадресной рассылки на ваш IP-адрес, прежде чем вы увидите пакет). Это красота многоадресной рассылки.

+3

Многоадресная передача IP ортогональна DHCP. – Fred

+0

Вы уверены, что многоадресная рассылка использует DHCP-сервер? Я не могу найти упоминания о DHCP в http://en.wikipedia.org/wiki/IP_multicast. Или вы говорите о [«Многоадресный DHCP»] (http://technet.microsoft.com/en-us/library/cc958927.aspx), который, похоже, является вещью Windows для назначения и настройки многоадресных адресов? –

+0

Многоадресная передача IP - это технология для обмена сообщениями «один-ко-многим» и «много-ко-многим» в режиме реального времени через IP-инфраструктуру в сети. Инфраструктура Ip включает DHCP. Без DHCP мы не можем зарезервировать IP-адреса, включая многоадресные адреса (которые находятся в диапазоне IP). Кроме того, без DHCP, как мы будем хранить файлы, сопоставляющие многоадресные группы с интерфейсами (IP-адресами)? Каждый маршрутизатор имеет таблицу, но для этого требуется сетевая инфраструктура. Возможно, есть некоторые, которые не используют DHCP, но затем каждый маршрутизатор просто общается с соседями, чтобы получить этот список. – Magn3s1um

Смежные вопросы