设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5726|回复: 0

2015-01-05 AnyChat提供完整的IP组播解决方案

[复制链接]

249

主题

2967

帖子

9070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9070
发表于 2015-1-5 16:23:23 | 显示全部楼层 |阅读模式
IP组播的介绍可参考:什么是IP组播技术,有什么作用?

自AnyChat r4424版本开始,AnyChat支持客户端组播,同时还支持服务器组播。音视频数据可以在客户端本地发送到IP组播组,也可以由客户端上传到服务器,然后由服务器发送到IP组播组。

客户端有关IP组播的相关接口定义(以JavaScript脚本为例):
  1. // 内核参数定义(API:BRAC_SetSDKOption传入参数)
  2. var BRAC_SO_NETWORK_MULTICASTPOLITIC     =                 45;        // 组播策略控制(参数为int型,定义为常量:BRAC_MCPOLITIC_XXXX)

  3. // 组播策略定义
  4. var BRAC_MCPOLITIC_DISABLE               =                0;        // 执行服务器路由策略,禁止所有组播发送[默认]
  5. var BRAC_MCPOLITIC_ONLYLOCALMC           =                1;        // 忽略服务器路由策略,只向客户端本地组播组广播媒体流
  6. var BRAC_MCPOLITIC_SERVERANDLOCALMC      =                2;        // 执行服务器路由策略,同时在客户端本地发送组播数据
  7. var BRAC_MCPOLITIC_ONLYSERVERMC          =                3;        // 忽略服务器路由策略,只向服务器本地组播组广播媒体流
  8. var BRAC_MCPOLITIC_SERVERANDSERVERMC     =                4;        // 执行服务器路由策略,同时在服务器端发送组播数据

  9. // 组播功能标志定义
  10. var BRAC_MCFLAGS_JOINGROUP               =        0x00000001;        // 加入多播组
  11. var BRAC_MCFLAGS_LEAVEGROUP              =        0x00000002;        // 离开多播组
  12. var BRAC_MCFLAGS_SENDDATA                =        0x00000010;        // 数据发送标志,指示该多播组用于发送数据
  13. var BRAC_MCFLAGS_RECVDATA                =        0x00000020;        // 数据接收标志,指示该多播组用于接收数据

  14. // 组播功能控制
  15. function BRAC_MultiCastControl(lpMultiCastAddr, dwPort, lpNicAddr, dwTTL, dwFlags);
复制代码
典型应用:A、B、C三个客户端,其中服务器、B、C处于一个组播网络环境下,A本地不支持组播,A的数据希望在服务器端组播传给B、C,而B、C的数据希望通过服务器直接点对点传给A
1、A需要使用组播策略4(SERVERANDSERVERMC),同时通知服务器向组播组发送数据,示例代码如下:
  1. BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC, BRAC_MCPOLITIC_SERVERANDSERVERMC);
  2. BRAC_MultiCastControl("224.2.3.4", 8100, "", 5, BRAC_MCFLAGS_SENDDATA);
复制代码
2、B、C也需要使用组播策略(SERVERANDSERVERMC),同时需要加入多播组,示例代码如下:
  1. BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC, BRAC_MCPOLITIC_SERVERANDSERVERMC);
  2. BRAC_MultiCastControl("224.2.3.4", 8100, "", 5, BRAC_MCFLAGS_JOINGROUP + BRAC_MCFLAGS_RECVDATA);
复制代码
相关示例代码(Web)位于Git库\web\src\tools\AnyChatMultiCast目录下(需要安装最新版本Web插件)。

参考:AnyChat IP组播示例程序及文档
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-3-29 09:36 , Processed in 0.158050 second(s), 27 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表