IP_MREQ_SOURCE 結構 (ws2ipdef.h)
ip_mreq_source結構提供 IPv4 位址的多播群組資訊。
語法
typedef struct ip_mreq_source {
IN_ADDR imr_multiaddr;
IN_ADDR imr_sourceaddr;
IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
成員
imr_multiaddr
IPv4 多播群組的位址。
imr_sourceaddr
IPv4 多播來源的位址。
imr_interface
介面的本機 IPv4 位址,或多播群組應該聯結、卸載、封鎖或解除封鎖的介面索引。 此值是以網路位元組順序排列。 如果此成員指定 0.0.0.0 的 IPv4 位址,則會使用預設的 IPv4 多播介面。
若要使用 1 的介面索引,會與 0.0.0.1 的 IP 位址相同。
備註
ip_mreq_source結構會與 IPv4 位址搭配使用。 ip_mreq_source結構會搭配IP_ADD_SOURCE_MEMBERSHIP、IP_BLOCK_SOURCE、IP_DROP_SOURCE_MEMBERSHIP和IP_UNBLOCK_SOURCE通訊端選項使用。
用於 IPv4 多播程式設計的 ip_mreq_source 結構和相關結構,是以 RFC 3768 第 4 節和第 8.1 節中的 IETF 建議為基礎。 如需詳細資訊,請參閱http://www.ietf.org/rfc/rfc3678.txt。
在 Windows Vista 和更新版本上,有一組通訊端選項可用於支援 IPv6 和 IPv4 位址的多播程式設計。 這些通訊端選項與 IP 無關,可在 IPv6 和 IPv4 上使用。 這些 IP 無關的選項會使用 GROUP_REQ 和 GROUP_SOURCE_REQ 結構,而且是 Windows Vista 和更新版本上多播程式設計慣用的通訊端選項。 如需詳細資訊,請參閱 多播程式設計 。
對於使用 IPv4 的較不可設定的多播功能,請使用 ip_mreq 結構。 針對 IPv6,請使用 ipv6_mreq 結構。
imr_interface成員可以是介面索引。 除了 0.0.0.0.0 的 IP 位址之外,0.x.x 區塊中的任何 IP 位址都會視為介面索引, () 0.0.0 的 IP 位址除外。 介面索引是 24 位的數位。 未使用 0.0.0.0/8 IPv4 位址區塊, (此範圍保留) 。 GetAdaptersAddresses函式可用來取得用於imr_interface成員的介面索引資訊。
建議您一律在ip_mreq_source結構的imr_interface成員中指定本機 IPv4 位址或介面索引,而不是使用預設介面。 這在具有多個網路介面和多個公用 IPv4 位址的電腦上特別重要。
用於 IPv4 多播的預設介面是由 Windows 中的網路堆疊所決定。 應用程式可以使用 GetIpForwardTable 函式來判斷用於 IPv4 多播的預設介面,以擷取 IPv4 路由表。 目的地 IP 位址為 224.0.0.0.0 之路由計量的最小值網路介面是 IPv4 多播的預設介面。 您也可以使用下列命令,從命令提示字元顯示路由表:
路由列印
IP_MULTICAST_IF通訊端選項可用來設定預設介面來傳送 IPv4 多播封包。 此通訊端選項不會變更用來接收 IPv4 多播封包的預設介面。
典型的 IPv4 多播應用程式會使用 IP_ADD_SOURCE_MEMBERSHIP 通訊端選項搭配 ip_mreq_source 結構來聯結多播群組,並在特定介面上接聽多播封包。 IP_MULTICAST_IF通訊端選項可用來設定介面,將 IPv4 多播封包傳送至多播群組。 最常見的案例是多播應用程式,可接聽並傳送多播群組的相同介面。 多播應用程式可能會使用多個通訊端來接聽,以及一或多個通訊端進行傳送。
在 Microsoft Windows 軟體發展工具組 (SDK) 針對 Windows Vista 和更新版本發行,標頭檔的組織已變更,而且 ip_mreq_source 結構定義于 Ws2ipdef.h 標頭檔中,該標頭檔會自動包含在 Ws2tcpip.h 標頭檔中。 不應直接使用 Ws2ipdef.h 標頭檔。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | ws2ipdef.h (包含 Ws2tcpip.h) |