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 多播接口。

除 IPv4 地址 0.0.) 0.0 之外,0.x.x 块 (第一个八位字节(0.0.0.0 除外)的任何 IP 地址都被视为接口索引。 接口索引是一个 24 位数字, (此范围保留) ,则不使用 0.0.0.0/8 IPv4 地址块。

使用接口索引 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 8 及更高版本上的 Windows Phone 应用商店应用支持此函数。

Windows 8.1Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更高版本的 Windows 应用商店应用支持此功能。

要求

   
最低受支持的客户端 Windows 8.1,Windows Vista [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 ws2tcpip.h
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

MULTICAST_MODE_TYPE

getsourcefilter

in_addr

setipv4sourcefilter

setsourcefilter