Share via


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_FILTERSIO_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_REQGROUP_SOURCE_REQ 結構和 SIOCSMSFILTERSIOCGMSFILTER 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標頭檔不應該直接使用。

注意IP_MSFILTERPIP_MSFILTER衍生結構只會在 Windows Vista 和更新版本發行的 Windows SDK 上定義。 ip_msfilter結構應該用於舊版 Windows SDK。
 

規格需求

   
最低支援的用戶端 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