IPV6_MREQ 结构 (ws2ipdef.h)

ipv6_mreq结构为 IPv6 地址提供多播组信息。

语法

typedef struct ipv6_mreq {
  IN6_ADDR ipv6mr_multiaddr;
  ULONG    ipv6mr_interface;
} IPV6_MREQ, *PIPV6_MREQ;

成员

ipv6mr_multiaddr

IPv6 多播组的地址。

ipv6mr_interface

应加入或删除多播组的本地接口的接口索引。 如果此成员将接口索引指定为 0,则使用默认多播接口。

注解

ipv6_mreq结构与 IPv6 地址一起使用。 ipv6_mreq 结构与 IPV6_ADD_MEMBERSHIPIPV6_DROP_MEMBERSHIPIPV6_JOIN_GROUPIPV6_LEAVE_GROUP 套接字选项一起使用。 IPV6_JOIN_GROUPIPV6_ADD_MEMBERSHIP套接字选项定义为相同。 IPV6_LEAVE_GROUPIPV6_DROP_MEMBERSHIP套接字选项定义为相同。

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

ipv6_mreq结构是 IPv6 等效于基于 IPv4 的ip_mreq结构。

GetAdaptersAddresses 函数可用于获取ipv6mr_interface成员所需的接口索引信息。

使用此结构的ipv6_mreq结构和IPPROTO_IPV6级套接字选项仅在数据报和原始套接字上有效, (套接字类型必须是SOCK_DGRAMSOCK_RAW) 。

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

用于 IPv6 多播的默认接口由 Windows 中的网络堆栈确定。 在 Windows Vista 及更高版本上,应用程序可以使用 GetIpForwardTable2 函数来确定用于 IPv6 多播的默认接口,以检索 IPv6 路由表。 目标 IPv6 多播地址的路由指标值最低的网络接口 (FF00::/8 IPv6 地址块) 是 IPv6 多播的默认接口。 还可以使用以下命令从命令提示符显示路由表:

route print

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

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

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

注意PIP6_MREQ派生结构仅在随 Windows Vista 及更高版本一起发布的Windows SDK上定义。 GROUP_REQGROUP_SOURCE_REQ结构,是 Windows Vista 及更高版本上多播编程的首选套接字选项。
 

要求

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

另请参阅

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable2

IPPROTO_IPV6套接字选项

多播编程

套接字选项

ip_mreq