使用 Windows 通訊端的 MLD 和 IGMP

Windows 通訊端可啟用 IPv6 上的多播接聽程式探索 (MLD) ,以及 IPv4 上的網際網路群組管理通訊協定 (IPV4 上的 IGMP) ,透過使用通訊端選項和 IOCTLs。 此頁面描述啟用多播程式設計的通訊端選項,並描述其使用方式。 如需每個通訊端選項的定義,請參閱 通訊端選項 頁面。

如需使用 IOCTL 進行多播程式設計的詳細資訊,請參閱本節稍後的 以狀態為基礎的多播程式設計

在 Windows Vista 和更新版本上,有一組通訊端選項可用於支援 IPv6 和 IPv4 位址的多播程式設計。 這些通訊端選項與 IP 無關,可在 IPv6 和 IPv4 上使用。 在 IPv6 上,這些通訊端選項會使用 MLDv2。 在 IPv4 上,這些通訊端選項會使用 IGMPv3。 這些 IP 無關的選項是 Windows Vista 和更新版本上多播程式設計慣用的通訊端選項。 Windows Sockets 使用下列通訊端選項:

通訊端選項 引數類型
MCAST_BLOCK_SOURCE GROUP_SOURCE_REQ 結構
MCAST_JOIN_GROUP GROUP_REQ 結構
MCAST_JOIN_SOURCE_GROUP GROUP_SOURCE_REQ 結構
MCAST_LEAVE_GROUP GROUP_REQ 結構
MCAST_LEAVE_SOURCE_GROUP GROUP_SOURCE_REQ 結構
MCAST_UNBLOCK_SOURCE GROUP_SOURCE_REQ 結構

 

一組通訊端選項可用於僅支援 IPv6 位址的多播程式設計。 這些通訊端選項會使用 MLDv1 或 MLDv2。 使用的 MLD 版本取決於 Windows 版本。 Windows Vista 和更新版本支援 MLDv2。 Windows Sockets 使用下列通訊端選項:

通訊端選項 引數類型
IPV6_ADD_MEMBERSHIP ipv6_mreq 結構
IPV6_DROP_MEMBERSHIP ipv6_mreq 結構

 

一組通訊端選項可用於僅支援 IPv4 位址的多播程式設計。 這些通訊端選項使用 IGMPv3 或 IGMPv2。 使用的 IGMP 版本取決於 Windows 版本。 Windows Vista 和更新版本支援 IGMPv3。 Windows Sockets 使用下列通訊端選項:

通訊端選項 引數類型
IP_ADD_MEMBERSHIP ip_mreq 結構
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source 結構
IP_BLOCK_SOURCE ip_mreq_source 結構
IP_DROP_MEMBERSHIP ip_mreq 結構
IP_DROP_SOURCE_MEMBERSHIP ip_mreq_source 結構
IP_UNBLOCK_SOURCE ip_mreq_source 結構

 

當 IGMPv3 可供使用時,IP_ADD_SOURCE_MEMBERSHIP、IP_BLOCK_SOURCE、IP_DROP_SOURCE_MEMBERSHIP和IP_UNBLOCK_SOURCE選項會更有效率地處理,因為路由器可以處理篩選。 當只有 IGMPv2 可用時,主機必須處理篩選。

有兩種類別,其中大部分的應用程式都可能落在其中:任何來源和受控制的來源。

  • 任何來源 應用程式預設都會接受所有來源,允許視需要關閉個別來源。 任何來源應用程式的範例是可讓所有收件者參與的視訊會議通話。
  • 受控制的來源 應用程式會將來源限制為指定的清單,例如網際網路無線電站或值得注意事件的廣播。 每個使用通訊端選項的程式稍有不同。

在 Windows Vista 和更新版本上,下列步驟適用于任何來源應用程式:

  • 使用 MCAST_JOIN_GROUP 加入群組。
  • 如有需要 ,請使用MCAST_BLOCK_SOURCE 關閉指定的來源。
  • 如有需要 ,請使用MCAST_UNBLOCK_SOURCE 重新允許封鎖的來源。
  • 使用 MCAST_LEAVE_GROUP 離開群組。

在 Windows Vista 和更新版本上,下列步驟適用于受控制的來源應用程式:

  • 使用 MCAST_JOIN_SOURCE_GROUP 來聯結每個群組/來源組。
  • 如果所有來源使用相同的群組位址,請使用 MCAST_LEAVE_SOURCE_GROUP 來離開每個群組/來源,或使用 MCAST_LEAVE_GROUP 來保留所有來源。

下列步驟適用于任何來源應用程式:

  • 使用 IP_ADD_MEMBERSHIP 加入 IPv6 ) 的群組 (IPV6_ADD_MEMBERSHIP
  • 如有需要 ,請使用IP_BLOCK_SOURCE 關閉指定的來源。
  • 如有需要 ,請使用IP_UNBLOCK_SOURCE 重新允許封鎖的來源。
  • 使用 IP_DROP_MEMBERSHIP 讓 IPv6) 的群組保持 (IPV6_DROP_MEMBERSHIP

下列步驟適用于受控制的來源應用程式:

  • 使用 IP_ADD_SOURCE_MEMBERSHIP 來聯結每個群組/來源組。
  • 使用 IP_DROP_SOURCE_MEMBERSHIP 離開每個群組/來源,或者如果所有來源使用相同的群組位址,請使用 IP_DROP_MEMBERSHIP 來保留所有來源。

這些通訊端選項設定的順序具有相關聯的規則。 如需多播通訊端選項的資訊和疑難排解資訊,請參閱 多播通訊端選項行為