Поделиться через


структура IP_MREQ_SOURCE (ws2ipdef.h)

Структура ip_mreq_source предоставляет сведения о группе многоадресной рассылки для IPv4-адресов.

Синтаксис

typedef struct ip_mreq_source {
  IN_ADDR imr_multiaddr;
  IN_ADDR imr_sourceaddr;
  IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;

Члены

imr_multiaddr

Адрес группы многоадресной рассылки IPv4.

imr_sourceaddr

Адрес источника многоадресной рассылки IPv4.

imr_interface

Локальный IPv4-адрес интерфейса или индекс интерфейса, по которому группа многоадресной рассылки должна быть присоединена, удалена, заблокирована или разблокирована. Это значение находится в сетевом порядке байтов. Если этот член указывает IPv4-адрес 0.0.0.0, используется интерфейс многоадресной рассылки IPv4 по умолчанию.

Использование индекса интерфейса 1 будет таким же, как и IP-адрес 0.0.0.1.

Комментарии

Структура ip_mreq_source используется с IPv4-адресами. Структура ip_mreq_source используется с параметрами сокета IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP и IP_UNBLOCK_SOURCE .

Структура ip_mreq_source и связанные структуры, используемые для многоадресного программирования IPv4, основаны на рекомендациях IETF, приведенных в разделах 4 и 8.1 RFC 3768. Для получения дополнительной информации см. http://www.ietf.org/rfc/rfc3678.txt.

В Windows Vista и более поздних версиях доступен набор параметров сокета для многоадресного программирования, поддерживающего адреса IPv6 и IPv4. Эти параметры сокета не зависят от IP-адресов и могут использоваться как для IPv6, так и для IPv4. Эти не зависящие от IP-адреса параметры используют структуры GROUP_REQ и GROUP_SOURCE_REQ и являются предпочтительными вариантами сокетов для многоадресного программирования в Windows Vista и более поздних версий. Дополнительные сведения см. в разделе Многоадресное программирование .

Для менее настраиваемых возможностей многоадресной рассылки с IPv4 используйте структуру ip_mreq . Для IPv6 используйте структуру ipv6_mreq .

Элемент imr_interface может быть индексом интерфейса. Любой IP-адрес в блоке 0.x.x.x (первый октет 0), за исключением IP-адреса 0.0.0.0, рассматривается как индекс интерфейса. Индекс интерфейса — это 24-разрядное число. Блок адресов IPv4 0.0.0/8 не используется (этот диапазон зарезервирован). Функцию GetAdaptersAddresses можно использовать для получения сведений об индексе интерфейса, используемых для элемента imr_interface .

Рекомендуется всегда указывать локальный IPv4-адрес или индекс интерфейса в элементе imr_interface структуры ip_mreq_source , а не использовать интерфейс по умолчанию. Это особенно важно на компьютерах с несколькими сетевыми интерфейсами и несколькими общедоступными IPv4-адресами.

Интерфейс по умолчанию, используемый для многоадресной рассылки по протоколу IPv4, определяется сетевым стеком в Windows. Приложение может определить интерфейс по умолчанию, используемый для многоадресной рассылки IPv4, с помощью функции GetIpForwardTable для получения таблицы маршрутизации IPv4. Сетевой интерфейс с наименьшим значением для метрики маршрутизации для IP-адреса назначения 224.0.0.0 является интерфейсом по умолчанию для многоадресной рассылки IPv4. Таблицу маршрутизации также можно отобразить из командной строки с помощью следующей команды:

печать маршрута

Параметр сокета IP_MULTICAST_IF можно использовать, чтобы задать интерфейс по умолчанию для отправки многоадресных пакетов IPv4. Этот параметр сокета не изменяет интерфейс по умолчанию, используемый для получения пакетов многоадресной рассылки IPv4.

Обычное приложение многоадресной рассылки IPv4 использует параметр сокета IP_ADD_SOURCE_MEMBERSHIP со структурой ip_mreq_source для присоединения к группе многоадресной рассылки и прослушивания пакетов многоадресной рассылки в определенном интерфейсе. Параметр сокета IP_MULTICAST_IF будет использоваться для настройки интерфейса для отправки многоадресных пакетов IPv4 в группу многоадресной рассылки. Наиболее распространенным сценарием является многоадресное приложение, которое прослушивает и отправляет в одном интерфейсе группу многоадресной рассылки. Многоадресное приложение может использовать несколько сокетов с одним сокетом для прослушивания и одним или несколькими сокетами для отправки.

В пакете SDK microsoft Windows, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, а структура ip_mreq_source определяется в файле заголовка Ws2ipdef.h , который автоматически включается в файл заголовка Ws2tcpip.h . Файлы заголовков Ws2ipdef.h никогда не следует использовать напрямую.

ПримечаниеПроизводные структуры IP_MREQ_SOURCE и PIP_MREQ_SOURCE определяются только в пакете Windows SDK, выпущенном вместе с Windows Vista и более поздних версий. Структуру ip_mreq_source следует использовать в более ранних версиях windows SDK.
 

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть ws2ipdef.h (включая Ws2tcpip.h)

См. также раздел

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

Параметры сокета IPPROTO_IP

Многоадресное программирование

Параметры сокета

ip_mreq

ip_msfilter

ipv6_mreq