多播程式設計
多播程式設計是透過 Windows 通訊端啟用。 Windows 通訊端可在 IPv6 上啟用多播接聽程式探索 (MLD) 版本 1 (MLDv1) 和 2 (MLDv2) ,以及 IPV6 上的網際網路群組管理通訊協定版本 2 (IGMPv2) 和 3 (IGMPv3) 使用通訊端選項或 IOCTL。 本節說明 Windows 實作、說明如何使用 Windows 通訊端啟用多播程式設計,並提供程式設計範例來說明其用法。
IGMP 的第二個版本稱為 IGMPv2,可讓主機加入並保留特定網路介面上 IPv4 多播位址所識別的多播群組。 Windows Sockets 可讓應用程式加入並保留特定通訊端上的這類群組。 不過,IGMPv2 的缺點是,任何加入 IGMPv2 群組的 IPv4 來源位址都可以傳輸至所有成員,並可能用盡群組,並使其無法用於需要主要來源的傳輸,例如網際網路無線電站。 IGMPv2 的問題在於無法選擇性地選擇單一 IPv4 來源位址 (或甚至是少數來源) ,以及無法封鎖傳送者 (,例如 Rogue 廣播者或拒絕服務) 指定多播群組的傳送者。 IGMPv3 可解決這些缺點。
使用 Windows 通訊端和 IGMPv3,應用程式可以選取特定的多播 IPv4 來源位址和多播群組組。 此外,Windows Sockets 可讓開發人員選擇性地允許指定來源/群組組中的其他廣播者,或讓應用程式封鎖特定的廣播者。 Windows Vista 和更新版本支援 IGMPv3。
IPv6 上第一個版本的 MLD 稱為 MLDv1,與 IGMPv2 非常類似,並受到相同的限制。 MLDv1 可讓主機加入和保留特定網路介面上 IPv6 多播位址所識別的多播群組。 Windows Sockets 可讓應用程式加入並保留特定通訊端上的這類群組。 不過,任何加入 MLDv1 群組的 IPv6 來源位址都可以傳輸至所有成員,而可能會溢入群組,並使其無法用於需要主要來源的傳輸。 MLDv1 的問題在於無法選擇性地選擇單一 IPv6 來源位址 (或甚至是少數來源) ,以及無法封鎖傳送者 (,例如 Rogue 廣播者或拒絕服務) 指定多播群組的傳送者。 MLDv2 可解決這些缺點。
使用 Windows 通訊端和 MLDv2,應用程式可以選取特定的多播 IPv6 來源位址和多播群組配對。 此外,Windows Sockets 可讓開發人員選擇性地允許指定來源/群組組中的其他廣播者,或讓應用程式封鎖特定的廣播者。 Windows Vista 和更新版本支援 MLDv2。
在 Windows 中開發多播應用程式時,應用程式程式設計人員可以使用兩種方法。 第一種方法是以變更為基礎;多播來源會視需要使用通訊端選項來新增或移除,即使在傳輸過程中也是如此。 第二種方法是以最終狀態為基礎;來源位址和任何包含/排除的位址都是使用 IOCTL 來指定。 每個方法都是有效的多播做法,但開發人員可能會發現使用通訊端選項和以變更為基礎的方法更直覺且更有彈性。
本節包含下列頁面:
頁面標題 | 描述 |
---|---|
使用 Windows 通訊端的 MLD 和 IGMP | 列舉可在 Windows Sockets 程式設計中使用的多播通訊端選項,方法是使用以變更為基礎的程式設計方法。 定義兩個多播應用程式類別。 |
多播通訊端選項行為 | 提供廣泛的資料表,說明特定順序呼叫多播通訊端選項的含意和需求。 |
多播程式設計範例 | 程式碼段,說明如何使用通訊端選項在 Windows 中啟用多播應用程式。 |
以最終狀態為基礎的多播程式設計 | 說明最終狀態方法,以及如何使用 IOCTL 搭配 Windows Socket 進行多播程式設計。 |
將廣播應用程式移植到 IPv6 | 提供將 IPv4 廣播應用程式移植到 IPv6 多播的指導方針。 |