在微软公司的Windows Socket 2.0网络开发工具之中,提供了unicast、broadcast和multicast三种类型的网络数据广播方式。unicast方式在发送数据时是按“一对一”的形式进行,如果服务器要把相同的数据传输到多个客户机上,它必须向每一个客户机都发送一次相同的数据,这种方式易于实现交互式操作,但需占用较多的带宽;broadcast方式是无选择地、以广播的形式向所有客户机发送数据,这种方式占用的带宽较少,但由于客户机接收了无用的数据,所以将造成不必要的干扰;multicast方式可实现组播(也称“多路广播”)功能,即服务器端可以同时与一组客户机进行通信,这种方式的实现是通过一组叫做D类的特殊地址(224.0.0.0-239.255.255.255)来实现,这些IP地址不对应具体的主机,而是对应组 (groups),或称频道 (channels)。在组播方式下发送的数据,同组的每台机都收到,而组外的都收不到,这种方式解决了前两种方式存在的问题,但需对IP地址进行有效的分类和管理。
为了节省网络带宽资源,视频数据的传输可以采用组播的方式。使用VC++编程实现组播功能,可以选择Windows Sockets API编程模式或MFC(Microsoft Foundation Classes)编程模式,前一种的编程步骤是首先建立广播套按字,然后配置及链接广播套按字,最后使用API函数实现信息收发功能。由于Windows Sockets API的收发函数都是阻塞函数,它们要在操作完成后才能返回及释放程序控制权,为了用好这种编程模式,还得自己编写复杂的阻塞管理程序,所以选用了后一种编程模式比较合适,即MFC编程模式。
在MFC 中, 主要由CASyncSocket 及 CSocket两个类实现对 Windows  Socket 的支持, CASyncSocket 从较底层提供 Windows  Socket 编程接口。 CSocket 类是 CASyncSocket 类的派生类,它继承了基类的功能并从更高层次上提供 Windows  Socket 编程接口,还提供了阻塞管理模式,可利用Carchive类进行同步操作。在这里,我们选用 CASyncSocket 类从较底层支持实时广播系统的数据传输功能,手工编写阻塞管理程序,这样在编程上具有较大的灵活性。
下面介绍一个组播系统数据读取及数据传输的编程方法:
 首先用 VC++ 提供的 AppWizard 建立名为“Send” 的多文档 (MDI) 工程,可视化类以 CFormView 为基类,并选择 WOSA 项, AppWizard 将把支持 Windows  Socket 所需的头文件加入工程中。然后选择 InSert 菜单项的 New Class 子项,加入两个以 CASyncSocket 为基类的新类 CMSock ,用于接收数据和发送数据,这两个类实现与客户机的通信功能。在CMSock类的初始化程序中,首先调用Create()建立广播套按字,该函数自动调用bind()函数,把广播套按字与本机地址及端口捆绑在一起。其次调用SetSockOpt()及setsockopt()函数进行套接字设置,值得注意的是,虽然前后两个函数字母相同,但大小写不同,所以用法也有些不同,前者是CASyncSocket类的成员函数,后者是Windows Sockets的API函数。最后在CMSock类中重载OnReceive()和SendTo ()函数即可收发数据。