Функция getipv4sourcefilter (ws2tcpip.h)

Встроенная функция getipv4sourcefilter извлекает состояние фильтра многоадресной рассылки для сокета IPv4.

Синтаксис

int getipv4sourcefilter(
  [in]      SOCKET              Socket,
  [in]      IN_ADDR             Interface,
  [in]      IN_ADDR             Group,
  [out]     MULTICAST_MODE_TYPE *FilterMode,
  [in, out] ULONG               *SourceCount,
  [out]     IN_ADDR             *SourceList
);

Параметры

[in] Socket

Дескриптор, определяющий сокет многоадресной рассылки.

[in] Interface

Локальный IPv4-адрес интерфейса или индекс интерфейса, по которому должна быть присоединена или удалена группа многоадресной рассылки.

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

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

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

[in] Group

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

[out] FilterMode

Указатель на значение для получения режима фильтра многоадресной рассылки для адреса группы многоадресной рассылки при возврате функции.

[in, out] SourceCount

Во входных данных — указатель на значение, указывающее максимальное количество исходных адресов, которые будут помещаться в буфер, на который указывает параметр SourceList .

В выходных данных — указатель на значение, указывающее общее количество исходных адресов, связанных с фильтром многоадресной рассылки.

[out] SourceList

Указатель на буфер для получения списка IP-адресов, связанных с фильтром многоадресной рассылки.

Если значение SourceCount равно нулю при входе, можно указать указатель NULL .

Возвращаемое значение

При успешном выполнении getipv4sourcefilter возвращает NO_ERROR (0). Любое ненулевое возвращаемое значение указывает на сбой, и конкретный код ошибки можно получить, вызвав WSAGetLastError.

Код ошибки Значение
WSAENOBUFS
Недостаточно места в буфере.
WSAENOTSOCK
Дескриптор не является сокетом.

Комментарии

Встроенная функция getipv4sourcefilter используется для получения состояния фильтра многоадресной рассылки для сокета IPv4.

Если приложение не знает размер исходного списка заранее, оно может сделать предположение (например, ноль). Если после завершения параметр SourceCount содержит большее значение, операцию можно повторить с достаточно большим буфером.

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

Эта функция является частью расширений интерфейса сокета для фильтров источников многоадресной рассылки, определенных в RFC 3678. Приложение может использовать эти функции для получения и настройки фильтров адресов источника многоадресной рассылки, связанных с сокетом.

Windows Phone 8. Эта функция поддерживается для приложений Магазина Windows Phone Windows Phone 8 и более поздних версий.

Windows 8.1 и Windows Server 2012 R2: эта функция поддерживается для приложений Магазина Windows на Windows 8.1, Windows Server 2012 R2 и более поздних версий.

Требования

   
Минимальная версия клиента Windows 8.1, Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header ws2tcpip.h
Библиотека Ws2_32.lib
DLL Ws2_32.dll

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

MULTICAST_MODE_TYPE

getsourcefilter

in_addr

setipv4sourcefilter

setsourcefilter