Отправка многоадресного сообщения состоит в создании сокета UDP и отправки сообщения по желаемому адресу многоадресной рассылки. В отличие от широковещательных сообщений, для отправки многоадресных не нужно заранее получать разрешение от операционной системы.
Напомним, что ранее мы смогли найти все хосты в локальной подсети, выполняя эхо-тестирование широковещательного адреса. Этот же прием можно использовать для поиска всех хостов, способных воспринимать многоадресные сообщения, путем отправки пакета в группу для всех хостов, 224.0.0.1.
Как и в приведенном ранее примере широковещательной рассылки, на сообщение эхо-тестирования ответило несколько сетевых устройств, включая логическое устройство с драйвером петли обратной связи (127.0.0.1) и ряд компьютеров UNIX и Windows. Однако в отличие от примера широковещательной рассылки, на пакет многоадресной рассылки не ответили два лазерных принтера, вероятно потому, что они не способны принимать многоадресные пакеты. Аналогичным образом можно выполнить эхо-тестирование адреса 224.0.0.2 группы всех маршрутизаторов (например, это могут быть маршрутизаторы Асус ) для поиска в локальной сети маршрутизаторов, способных выполнять многоадресную рассылку, адреса 224.0.0.4 — для поиска маршрутизаторов DVMRP и т.д.
Для отправки многоадресного сообщения в сценарий Perl достаточно создать сокет UDP и отправить через него сообщение по желаемому адресу группы. Для иллюстрации этого можно использовать клиент широковещательной службы эхо-повтора, описанный ранее, для поиска всех хостов в локальной подсети, способных принимать многоадресные сообщения от эхо-сервера. Эта программа не требует изменений; вместо предоставления широковещательного адреса в качестве параметра командной строки, достаточно указать адрес группы для всех хостов.
Интересно то, что список серверов, ответивших на запрос клиента службы эхо-повтора, гораздо короче списка, полученного в результате широковещательной проверки службы эхо-повтора, проведенной ранее.