**1.4.1、接口方法说明:**
**1.4.1.1、客户端之间或与服务器使用透明通道传输数据接口**
DWORD **BRAS_TransBuffer**(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen);
功能:透明通道传送缓冲区,向指定的用户传输缓冲区
返回值:0表示成功,否则为出错代码
参数:
dwUserid: 目标用户编号,不能为-1
lpBuf: 缓冲区
dwLen: 缓冲区的大小
备注:
可以利用该方法实现自定义功能,缓冲区采用透明传输,效率与BRAS_SendBufToRoom、BRAS_SendBufToUser两个方法相同,只是触发客户端的回调函数不同。
该方法为V4.1版本新增API接口,主要是为了兼容客户端API接口而设计。
该方法将会触发接收到数据的客户端的BRAC_TransBuffer_CallBack回调函数。
该方法不需要用户进入房间,即可以在服务器内部的任意用户之间传输数据。
**1.4.1.2、客户端之间或与服务器使用透明通道扩展传输数据**
DWORD BRAS_**TransBufferEx** (DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwFlags , DWORD& dwTaskId);
功能:透明通道传送缓冲区,传输更大容量的缓冲区数据,而且可以附带参数
返回值:0表示成功,否则为出错代码
参数:
dwUserid: 目标用户编号,只针对某一个用户,不能为-1(所有人)
lpBuf: 缓冲区,≤1024KB(1MB),内部会自动分包处理
dwLen: 缓冲区的大小
wParam: 附带参数,由上层应用自定义
lParam: 附带参数2,由上层应用自定义
dwFlags: 特殊功能标志,当对该缓冲区有特殊要求时,可通过使用相关的功能标志,通知SDK进行特殊的处理,默认为0,SDK将自动根据网络状态选择合适的传输途径(TCP、UDP or P2P)
dwTaskId 与该缓冲区对应的任务ID(只有任务添加成功后,该ID才会自动生成,可利用该ID查询该任务的传输进度)
**备注:**
该方法与“BRAS_TransBuffer”功能相同,都是传输上层应用自定义(透明通道)数据,区别在于该方法通过设置相应的功能标识,如可选择采用UDP通道传输,但是只针对指定的用户传输,而“BRAS_TransBuffer”方法则固定采用TCP通道传输,且缓冲区大小不能超过1024个字节,但可以针对所有用户传输。
从应用来看:
(1)、BRAS_TransBuffer适合数据量小、要求实时传输的缓冲区传递,如控制指令等;
(2)、BRAS_TransBufferEx适合数据量大、对实时性要求不高的需求;
该方法将会触发接收到数据的客户端的BRAC_TransBufferEx_CallBack回调函数。
该方法不需要用户进入房间,即可以在服务器内部的任意用户之间传输数据。
**1.4.1.3、客户端与服务器之间传输缓冲区数据(SDK Filter Data接口)**
(1)客户端向服务器发送数据
DWORD BRAC_SendSDKFilterData(LPBYTE lpBuf, DWORD dwLen);
功能:向服务器发送SDK Filter通信数据
返回值:0表示成功,否则为出错代码
参数:
lpBuf: 缓冲区
dwLen: 缓冲区的大小
备注:
服务器收到数据后,会将该缓冲区数据全部提交给SDK Filter,由SDK Filter来解析,该缓冲区的内容对于本SDK和服务器来说,都是透明的。
当服务器向客户端发送SDKFilterData数据时,将会触发SDK的回调:SDK Filter通信数据回调函数(参考:BRAC_SetSDKFilterData_CallBack)
(2)向指定用户发送数据接口
DWORD **BRAS_SendBufToUser**(DWORD dwUserId, LPCTSTR lpBuf, DWORD dwLen);
功能:向指定用户发送自定义数据。
返回值:0表示成功,否则为出错代码
参数:
dwUserId 目标用户ID
lpBuf 所发送缓冲区地址
dwLen 所发送缓冲区长度,不能大于1024个字节
备注:
当用户登录成功之后,无论该用户是否在房间,业务层服务器均可调用该方法向指定的客户端发送数据,数据内容由上层应用自定义。
客户端程序收到服务器所发送的缓冲区数据后,将会触发客户端的回调函数“BRAC_SDKFilterData_CallBack”。
(3)向指定房间的所有用户发送数据
DWORD **BRAS_SendBufToRoom**(DWORD dwRoomId, LPCTSTR lpBuf, DWORD dwLen);
功能:向指定房间的所有用户发送数据。
返回值:0表示成功,否则为出错代码
参数:
dwRoomId 目标房间ID,为-1表示向系统中的所有用户广播
lpBuf 所发送缓冲区地址
dwLen 所发送缓冲区长度,不能大于1024个字节
备注:
业务层服务器可使用该方法向指定房间的所有用户广播数据,也可向系统中所有用户广播数据,数据内容由上层应用自定义。
客户端程序收到服务器所发送的缓冲区数据后,将会触发客户端的回调函数“BRAC_SDKFilterData_CallBack”。
**回调函数说明:**
**1.4.2、透明通道数据回调函数**
typedef void (CALLBACK * BRAS_TransBuffer_CallBack)(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, LPVOID lpUserValue);
参数:
dwUserid: 用户ID,指示发送用户
lpBuf: 缓冲区地址
dwLen: 缓冲区大小
lpUserValue: 用户自定义参数,在设置回调函数时传入
AnyChat Server SDK 开发指南 佰锐科技 版权所有
备注:
当收到客户端使用“BRAC_TransBuffer”方法发送的数据,且目标用户ID为0时,服务器将会触发该回调函数。
由于该函数传递的数据是一个与本SDK无关的缓冲区(由上层应用自己填充内容),相对于本SDK来说是透明的,故称为透明通道,利用该通道,可以向当前房间内的任何用户传输上层应用自定义的数据。
**1.4.3、透明通道数据扩展回调函数**
typedef void (CALLBACK * BRAS_TransBufferEx_CallBack)(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, DWORD wParam, DWORD lParam, DWORD dwTaskId, LPVOID lpUserValue);
参数:
dwUserid: 用户ID,指示发送用户
lpBuf: 缓冲区地址
dwLen: 缓冲区大小
wParam: 缓冲区附带参数(由发送者设置,上层应用可自定义用途)
lParam: 缓冲区附带参数2
dwTaskId: 该缓冲区所对应的传输任务编号
lpUserValue: 用户自定义参数,在设置回调函数时传入
备注:
当收到客户端使用“BRAC_TransBufferEx”方法发送的数据(目标用户为0)时,将会触发该回调函数。
**1.4.4、服务器通信数据回调函数**
DWORD BRAC_SetSDKFilterDataCallBack(BRAC_SDKFilterData_CallBack lpFunction, LPVOID lpUserValue=NULL);
功能:设置SDK Filter通信数据回调函数,当服务器SDK Filter发送数据给客户端时,将触发该回调函数,将服务器SDK Filter传递的缓冲区数据回调给上层应用。
返回值:0表示成功,否则为出错代码
参数:
lpFunction 回调函数地址。
lpUserValue 用户自定义参数,该参数在回调函数中被返回,默认为NULL,通常传入一个对象的地址(指针)。
备注:
当客户端向服务器发送自定义通信数据时,服务器将触发所设置的回调函数,数据内容可由上层应用自己定义,可以为任何数据类型,业务层服务器可在回调函数中分析所收到的缓冲区内容并进行对应的处理。