2010-11-22 3 views
2

Я хочу реализовать в своей программе функции, которые позволят обнаружить узлы, запускающие одно и то же приложение в локальной сети. Для этого я открою в своей программе сокет UDP и присоединяю группу многоадресной рассылки по адресу 224.0.0.1 (при использовании IPv4) или ff02 :: 1 (при использовании IPv6). Затем я собираюсь уведомить другие хосты, что я только что вошел в эту сеть. У меня есть два вопроса в соответствии с моей идеей:Поиск одноранговых узлов в локальной сети

  1. Правильно ли это, или, может быть, есть лучшие решения?
  2. Какова общая политика использования многоадресной связи в локальных сетях (например, горячих точках)? Возможно ли это, или большинство маршрутизаторов блокируют или даже не поддерживают многоадресную связь вообще?

Я разрабатываю свое приложение на C++ для Linux, в будущем я буду писать версию для Windows на C#.

ответ

1

Обычно это ваш лучший вариант. Другим вариантом будет передача UDP, но нет гарантии доставки, поэтому вы должны транслировать с регулярным интервалом, чтобы убедиться, что другие приложения слышат его.

Что касается политики, я только что проверил точку доступа Linksys Wifi, и она по умолчанию отключила многоадресную рассылку. Я подозреваю, что в этой конфигурации по умолчанию было много мест.

+0

Еще один вопрос: будет ли getockopt() возвращать ошибку при попытке присоединиться к многоадресной группе в сети, где многоадресная связь заблокирована? – Goofy 2010-11-23 09:05:40

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