AnyChat技术支持论坛
标题:
2015-01-05 AnyChat提供完整的IP组播解决方案
[打印本页]
作者:
admin
时间:
2015-1-5 16:23
标题:
2015-01-05 AnyChat提供完整的IP组播解决方案
IP组播的介绍可参考:
什么是IP组播技术,有什么作用?
自AnyChat r4424版本开始,AnyChat支持客户端组播,同时还支持服务器组播。音视频数据可以在客户端本地发送到IP组播组,也可以由客户端上传到服务器,然后由服务器发送到IP组播组。
客户端有关IP组播的相关接口定义(以JavaScript脚本为例):
// 内核参数定义(API:BRAC_SetSDKOption传入参数)
var BRAC_SO_NETWORK_MULTICASTPOLITIC = 45; // 组播策略控制(参数为int型,定义为常量:BRAC_MCPOLITIC_XXXX)
// 组播策略定义
var BRAC_MCPOLITIC_DISABLE = 0; // 执行服务器路由策略,禁止所有组播发送[默认]
var BRAC_MCPOLITIC_ONLYLOCALMC = 1; // 忽略服务器路由策略,只向客户端本地组播组广播媒体流
var BRAC_MCPOLITIC_SERVERANDLOCALMC = 2; // 执行服务器路由策略,同时在客户端本地发送组播数据
var BRAC_MCPOLITIC_ONLYSERVERMC = 3; // 忽略服务器路由策略,只向服务器本地组播组广播媒体流
var BRAC_MCPOLITIC_SERVERANDSERVERMC = 4; // 执行服务器路由策略,同时在服务器端发送组播数据
// 组播功能标志定义
var BRAC_MCFLAGS_JOINGROUP = 0x00000001; // 加入多播组
var BRAC_MCFLAGS_LEAVEGROUP = 0x00000002; // 离开多播组
var BRAC_MCFLAGS_SENDDATA = 0x00000010; // 数据发送标志,指示该多播组用于发送数据
var BRAC_MCFLAGS_RECVDATA = 0x00000020; // 数据接收标志,指示该多播组用于接收数据
// 组播功能控制
function BRAC_MultiCastControl(lpMultiCastAddr, dwPort, lpNicAddr, dwTTL, dwFlags);
复制代码
典型应用:A、B、C三个客户端,其中服务器、B、C处于一个组播网络环境下,A本地不支持组播,A的数据希望在服务器端组播传给B、C,而B、C的数据希望通过服务器直接点对点传给A
1、A需要使用组播策略4(SERVERANDSERVERMC),同时通知服务器向组播组发送数据,示例代码如下:
BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC, BRAC_MCPOLITIC_SERVERANDSERVERMC);
BRAC_MultiCastControl("224.2.3.4", 8100, "", 5, BRAC_MCFLAGS_SENDDATA);
复制代码
2、B、C也需要使用组播策略(SERVERANDSERVERMC),同时需要加入多播组,示例代码如下:
BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC, BRAC_MCPOLITIC_SERVERANDSERVERMC);
BRAC_MultiCastControl("224.2.3.4", 8100, "", 5, BRAC_MCFLAGS_JOINGROUP + BRAC_MCFLAGS_RECVDATA);
复制代码
相关示例代码(Web)位于
Git库\web\src\tools\AnyChatMultiCast
目录下(需要安装最新版本Web插件)。
参考:
AnyChat IP组播示例程序及文档
欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/)
Powered by Discuz! X3