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 位址,或應該篩選多播群組的介面索引。 此值會依網路位元組順序排列。 如果此成員指定 0.0.0.0 的 IPv4 位址,則會使用預設的 IPv4 多播介面。
若要使用 1 的介面索引,與 0.0.0.1 的 IP 位址相同。
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_FILTER和SIO_SET_MULTICAST_FILTER IOCTLs 的引數傳遞。
ip_msfilter結構和用於 IPv4 多播程式設計的相關結構,是以 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 結構和 SIOCSMSFILTER 和 SIOCGMSFILTER IOCTLs。 這些是 Windows Vista 和更新版本上多播程式設計的慣用通訊端選項和 IOCTL。
imsf_interface成員可以是介面索引。 除了 0.0.0.0.0 的 IPv4 位址之外,0.x.x 區塊中的任何 IPv4 位址 (第一個八位 0) 都會被視為介面索引。 介面索引是 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 多播的預設介面。 您也可以使用下列命令,從命令提示字元顯示路由表:
路由列印
IP_MULTICAST_IF通訊端選項可用來設定預設介面來傳送 IPv4 多播封包。 此通訊端選項不會變更用來接收 IPv4 多播封包的預設介面。
典型的 IPv4 多播應用程式會使用 IP_ADD_MEMBERSHIP 通訊端選項搭配 ip_mreq 結構,或搭配 ip_mreq_source 結構的 IP_ADD_SOURCE_MEMBERSHIP 通訊端選項來聯結多播群組,並接聽特定介面上的多播封包。 IP_MULTICAST_IF通訊端選項可用來設定介面,以將 IPv4 多播封包傳送至多播群組。 最常見的案例是多播應用程式,它會接聽多播群組的相同介面並傳送。 多播應用程式可能會使用多個通訊端來接聽,以及一或多個通訊端進行傳送。
在針對 Windows Vista 和更新版本發行的 Microsoft Windows 軟體發展工具組 (SDK) 上,標頭檔的組織已變更, 且ip_msfilter 結構定義于 Ws2ipdef.h 標頭檔中,該標頭檔會自動包含在 Ws2tcpip.h 標頭檔中。 Ws2ipdef.h標頭檔不應該直接使用。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
標頭 | ws2ipdef.h (包含 Ws2tcpip.h) |