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 離開所有來源(如果所有來源都使用相同的群組位址)。
設定這些套接字選項的順序有其相關規則。 如需多播套接字選項的相關資訊及疑難解答,請參閱 多播套接字選項行為。