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_MEMBERSHIP、IPV6_DROP_MEMBERSHIP、IPV6_JOIN_GROUP和IPV6_LEAVE_GROUP套接字選項搭配使用。 IPV6_JOIN_GROUP和IPV6_ADD_MEMBERSHIP套接字選項會定義為相同。 IPV6_LEAVE_GROUP和IPV6_DROP_MEMBERSHIP套接字選項會定義為相同。
在 Windows Vista 和更新版本上,有一組套接字選項可用於支援 IPv6 和 IPv4 位址的多播程序設計。 這些套接字選項與IP無關,可在IPv6和IPv4上使用。 這些IP無關的選項會使用 GROUP_REQ 和 GROUP_SOURCE_REQ 結構,而且是Windows Vista和更新版本上多播程式設計慣用的套接字選項。
ipv6_mreq 結構相當於 IPv4 型ip_mreq結構。
GetAdaptersAddresses 函式可用來取得ipv6mr_interface成員所需的介面索引資訊。
ipv6_mreq 結構和使用此結構的IPPROTO_IPV6層級套接字選項只有在數據報和原始套接字上才有效, (套接字類型必須SOCK_DGRAM或SOCK_RAW) 。
建議您一律在 ipv6_mreq 結構的 ipv6mr_interface 成員中指定本機 IPv6 介面索引,而不是使用預設介面。 這在具有多個網路介面和多個公用 IPv6 位址的電腦上特別重要。
用於 IPv6 多播的預設介面是由 Windows 中的網路堆疊所決定。 在 Windows Vista 和更新版本上,應用程式可以使用 GetIpForwardTable2 函式來判斷用於 IPv6 多播的預設介面,以擷取 IPv6 路由表。 目的地 IPv6 多播位址路由計量的最小值網路介面, (FF00::/8 IPv6 位址區塊) 是 IPv6 多播的預設介面。 您也可以使用下列命令,從命令提示字元顯示路由表:
路由列印
IPV6_MULTICAST_IF套接字選項可用來設定預設介面來傳送IPv6多播封包。 此套接字選項不會變更用來接收 IPv6 多播封包的預設介面。
典型的 IPv6 多播應用程式會使用 IPV6_ADD_MEMBERSHIP 或 IPV6_JOIN_GROUP 套接字選項搭配 ipv6_mreq 結構來聯結多播群組,並在特定介面上接聽多播封包。 IPV6_MULTICAST_IF套接字選項可用來設定介面,將 IPv6 多播封包傳送至多播群組。 最常見的案例是多播應用程式,可接聽並傳送多播群組的相同介面。 多播應用程式可能會使用多個套接字來接聽,以及一或多個套接字進行傳送。
在針對 Windows Vista 和更新版本發行的 Microsoft Windows 軟體開發套件 (SDK) 上,頭文件的組織已變更,而且ipv6_mreq結構定義於 Ws2ipdef.h 頭檔中,該文件會自動包含在 Ws2tcpip.h 頭檔中。 不應直接使用 Ws2ipdef.h 頭檔。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | ws2ipdef.h (包含 Ws2tcpip.h) |