在Internet上,多媒体业务诸如:流媒体,视频会议和视频点播等,正在成为信息传送的重要组成部份。点对点传输的单播方式不能适应这1类业务传输特性--单点发送多点接收,由于服务器必须为每个接收者提供1个相同内容的IP报文拷贝,同时网络上也重复地传输相同内容的报文,占用了大量资源。在这类情况下组播(multicast)应运而生,它的出现解决了1个主机向特定的多个接收者发送消息的方法。1989年,IETF通过RFC1112,定义了Internet上的组播方式。
主机组的成员可以动态变化,主机有权选择加入或退出某个主机组。主机可以加入多个主机组,也能够向自己没有加入的主机组发送数据。主机组有两种:永久组和临时组。永久组的IP地址是周知的,由Internet管理机构分配,是保存地址。临时组的地址则使用除永久组地址外的非保存D类地址。
IP组播分组在互联网上的转发由支持组播的路由器来处理。主机发出的IP组播分组在本子网内被所有主机组成员接收,同时与该子网直接相连的组播路由器会把组播报文 转发到所有包括该主机组成员的网络上。组播报文传递的范围由报文的生存期值(TTL, Time-to-Live)决定,如果TTL值等于或小于设置的路由器端口TTL门限值(TTL Threshold),路由器将不再转发该报文。
单个数据流可以发送到多个客户真个组播能力已成为大多数多媒体利用的传输手段。组播技术利用1个IP地址使IP数据报文 发送到用户组。IP组播采取了特殊定义的目的IP地址和目的MAC地址。IGMP为客户端提供加入和离开组播组的方式。CGMP使路由器为交换机配置组播 转发表,并告知交换机当前的组播成员。指派路由器根据对网络中的组播成员的散布和使用的不同采取密集模式DM或稀疏模式SM组播路由协议来构造组播的散布 树,而这个散布树将在源子网和组播组之间肯定1条唯1路径以提高数据传输效力。
IP组播技术需要3层交换机,或路由器支持,通常利用于专用网络,如:教育网、**网和企业内部网等,使用IP组播技术可以极大的下降数据发送方的带宽要求,最大的好处是可让数据接收方的数量不计其数,而不会造成网络的阻塞。
AnyChatPlatform Core SDK V4.0新增了对IP组播技术的支持,下面介绍如何使用相干的API接口,典型的加入多播组,并向多播组发送数据的代码以下:
1.//设置本地组播策略
2.DWORD dwMultiCastPolitic = 1;
3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(constchar*)&dwMultiCastPolitic,sizeof(DWORD));
4.
5.//加入多播组
6.DWORD dwFlags = BRAC_MCFLAGS_JOINGROUP | BRAC_MCFLAGS_SENDDATA |BRAC_MCFLAGS_RECVDATA;
7.BRAC_MultiCastControl("224.2.3.4",9810, "",5, dwFlags);
上面的代码中“dwFlags”标志唆使加入多播组“224.2.3.4:9810”,本地的数据通过该多播组进行传输,同时,自己也从该多播组接收其它用户的音视频数据。
当需要本地发送组播数据时,设置本地组播策略是必须的,由于系统默许是采取服务器所配置的网络数据传输策略(AnyChatCoreServer.ini中的“RoutingPolicy”配置项)进行数据发送,如不设置本地组播策略,则不会向组播地址发送数据,设置以后,可以将本地的数据发送多个组播地址和端口,以下面的代码表示音视频数据将向“224.2.3.4:9810”、“224.2.3.4:9812”两个组播端口广播数据:
1.//设置本地组播策略
2.DWORD dwMultiCastPolitic = 1;
3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(constchar*)&dwMultiCastPolitic,sizeof(DWORD));
4.
5.//加入多播组
6.DWORD dwFlags = BRAC_MCFLAGS_JOINGROUP | BRAC_MCFLAGS_SENDDATA;
7.BRAC_MultiCastControl("224.2.3.4",9810, "",5, dwFlags);
8.BRAC_MultiCastControl("224.2.3.4",9812, "",5, dwFlags);
当系统有多块网卡,而需要向其中某1块网卡连接的网络进行组播时,可通过“BRAC_MultiCastControl”的第3个参数来指定便可,第3个参数是指定网卡的IP地址。
上一篇 无线充电Qi通信协议分析