共用方式為


MLD 和 IGMP 使用 Windows 套接字

Windows 套接字可使用套接字選項和 IOCTL,在 IPv6 上啟用多播接收者探索(MLD)和在 IPv4 上啟用網際網路群組管理協定(IGMP)以支援多播應用程式。 此頁面描述啟用多播程序設計的套接字選項,並描述其使用方式。 如需每個套接字選項的定義,請參閱 套接字選項 頁面。

如需使用 IOCTL 進行多播程式設計的詳細資訊,請參閱本節稍後的-State-Based 多播程式設計

在 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_取消成員資格 ipv6_mreq 結構

 

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

套接字選項 參數類型
IP_ADD_MEMBERSHIP ip_mreq 結構體
IP_新增來源成員資格 ip_mreq_source 結構
IP封鎖來源 ip_mreq_source 結構
IP_DROP_MEMBERSHIP ip_mreq 結構
停止來源成員資格 ip_mreq_source 結構
IP解除封鎖來源 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 離開所有來源(如果所有來源都使用相同的群組位址)。

設定這些套接字選項的順序有其相關規則。 如需多播套接字選項的相關資訊及疑難解答,請參閱 多播套接字選項行為