IP_MSFILTER 结构 (ws2ipdef.h)

ip_msfilter 结构为 IPv4 地址提供多播筛选参数。

语法

typedef struct ip_msfilter {
  IN_ADDR             imsf_multiaddr;
  IN_ADDR             imsf_interface;
  MULTICAST_MODE_TYPE imsf_fmode;
  ULONG               imsf_numsrc;
  IN_ADDR             imsf_slist[1];
} IP_MSFILTER, *PIP_MSFILTER;

成员

imsf_multiaddr

多播组的 IPv4 地址。

imsf_interface

接口的本地 IPv4 地址,或应对其筛选多播组的接口索引。 此值采用网络字节顺序。 如果此成员将 IPv4 地址指定为 0.0.0.0,则使用默认 IPv4 多播接口。

若要使用接口索引 1,则与 IP 地址 0.0.0.1 相同。

imsf_fmode

要使用的多播筛选器模式。 此参数可以是MCAST_INCLUDE (值 0) 以包含特定的多播源,也可以MCAST_EXCLUDE (值 1) 来排除来自指定源的流量。

在 Windows Server 2003 和 Windows XP 上,这些值在 Ws2tcpip.h 头文件中定义。

在 Windows Vista 及更高版本中,这些值定义为 Ws2ipdef.h 头文件中定义的 MULTICAST_MODE_TYPE 枚举值。

imsf_numsrc

imsf_slist 成员中的源数。

imsf_slist[1]

in_addr结构的数组,这些结构指定要包括或排除的 IPv4 多播源地址。

注解

ip_msfilter结构用于 IPv4 地址。 ip_msfilter 结构作为SIO_GET_MULTICAST_FILTERSIO_SET_MULTICAST_FILTER IOCTL 的参数传递。

用于 IPv4 多播编程 的ip_msfilter 结构和相关结构基于 RFC 3768 第 4 节和第 8.1 节中的 IETF 建议。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc3678.txt

在 Windows Vista 及更高版本上,一组套接字选项可用于支持 IPv6 和 IPv4 地址的多播编程。 这些套接字选项与 IP 无关,可用于 IPv6 和 IPv4。 这些与 IP 无关的选项使用 GROUP_REQGROUP_SOURCE_REQ 结构以及 SIOCSMSFILTERSIOCGMSFILTER IOCTL。 这些是在 Windows Vista 及更高版本上进行多播编程的首选套接字选项和 IOCTL。

imsf_interface 成员可以是接口索引。 除 0.0.0.0.) 0 的 IPv4 地址外,0.x.x 块 (第一个八位字节(0.0.0.0 除外)的任何 IPv4 地址都被视为接口索引。 接口索引是 24 位数字。 (此范围保留) ,则不使用 0.0.0.0/8 IPv4 地址块。 GetAdaptersAddresses 函数可用于获取要用于 imsf_interface 成员的接口索引信息。

建议始终在 ip_msfilter 结构的imsf_interface 成员中指定本地 IPv4 地址或接口索引,而不是使用默认接口。 这在具有多个网络接口和多个公共 IPv4 地址的计算机上尤其重要。

用于 IPv4 多播的默认接口由 Windows 中的网络堆栈决定。 应用程序可以使用 GetIpForwardTable 函数来确定用于 IPv4 多播的默认接口,以检索 IPv4 路由表。 目标 IP 地址的路由指标值为 224.0.0.0 的网络接口是 IPv4 多播的默认接口。 还可以使用以下命令从命令提示符显示路由表:

route print

IP_MULTICAST_IF套接字选项可用于设置默认接口以发送 IPv4 多播数据包。 此套接字选项不会更改用于接收 IPv4 多播数据包的默认接口。

典型的 IPv4 多播应用程序将使用 具有ip_mreq 结构的 IP_ADD_MEMBERSHIP 套接字选项,或使用 具有 ip_mreq_source 结构的 IP_ADD_SOURCE_MEMBERSHIP 套接字选项来加入多播组并侦听特定接口上的多播数据包。 IP_MULTICAST_IF套接字选项用于设置接口,以将 IPv4 多播数据包发送到多播组。 最常见的方案是多播应用程序,该应用程序侦听和发送多播组的同一接口。 多播应用程序可以使用多个套接字,其中一个套接字用于侦听,一个或多个套接字用于发送。

在为 Windows Vista 及更高版本发布的 Microsoft Windows 软件开发工具包 (SDK) 上,头文件的组织已更改, ip_msfilter 结构在 Ws2ipdef.h 头文件中定义,该文件自动包含在 Ws2tcpip.h 头文件中。 不应直接使用 Ws2ipdef.h 头文件。

注意IP_MSFILTERPIP_MSFILTER派生结构仅在随 Windows Vista 及更高版本一起发布的 Windows SDK 上定义。 应在早期版本的 Windows SDK 上使用 ip_msfilter 结构。
 

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 ws2ipdef.h (包括 Ws2tcpip.h)

另请参阅

基于最终状态的多播编程

GROUP_FILTER

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

IPPROTO_IP套接字选项

MULTICAST_MODE_TYPE

多播编程

套接字选项

ip_mreq

ip_mreq_source