透明通道问题
DWORD BRAS_TransBuffer(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen);功能:透明通道传送缓冲区,向指定的用户传输缓冲区
返回值:0 表示成功,否则为出错代码
参数:
dwUserid: 目标用户编号,不能为-1
lpBuf: 缓冲区
dwLen:缓冲区的大小
备注:
可以利用该方法实现自定义功能,缓冲区采用透明传输,效率与
BRAS_SendBufToRoom、BRAS_SendBufToUser 两个方法相同,只是触发客户端
的回调函数不同。
这里的缓冲区怎么设置?
缓冲区可以是一个字节数组,或是一个字符串等,也可以是一块内存,传入首地址即可。 admin 发表于 2014-12-1 16:40
缓冲区可以是一个字节数组,或是一个字符串等,也可以是一块内存,传入首地址即可。
使用这个接口后public static extern int BRAS_TransBuffer(int dwUserId, byte[] lpBuf, int dwLen);
客户端在哪里能够接收到数据 您好,请参考:如何使用缓冲区及文件传输功能? admin 发表于 2014-12-1 21:27
您好,请参考:如何使用缓冲区及文件传输功能?
private void button3_Click(object sender, EventArgs e)
{
int i;
string userID = this.textBox1.Text.Trim();
i = int.Parse(userID);
string message = this.textBox2.Text.Trim();
byte[] byteArray = System.Text.Encoding.Default.GetBytes(message);
AnyChatServerSDK.BRAS_TransBuffer(i, byteArray, byteArray.Length);
//public static extern int BRAS_SendBufToUser(int userId, byte[] buf, int len);
//public static extern int BRAS_TransBuffer(int dwUserId, byte[] lpBuf, int dwLen);
}在业务服务器这里触发了透明通道函数后
是不是在客户端将触发这个函数
/// <summary>
/// 透明通道数据回调函数定义
/// </summary>
/// <param name="userId">用户ID</param>
/// <param name="buf">缓冲区</param>
/// <param name="len">缓冲区长度</param>
/// <param name="userValue">附带信息</param>
public delegate void TransBufferCallBack(int userId, IntPtr buf, int len, int userValue);
那么就是不知道在这里怎么把 buf的数据获取出来? 您好,可参考C#的示例工程源代码,位于AnyChat for Windows SDK\src\client\c#目录下。 admin 发表于 2014-12-1 22:35
您好,可参考C#的示例工程源代码,位于AnyChat for Windows SDK\src\client\c#目录下。
方便的话把那段模块截个图 就是客户端接收的那个 实在是找不到 麻烦了 您好,代码位于AnyChat for Windows SDK\src\client\c#\AnyChatCallCenter\VideoChatClient\Login.cs里面,查找:TransBuffer即可。//透明通道回调
SystemSetting.TransBuffer_OnReceive = new TransBufferReceivedHandler(TransBuffer_CallBack);
……
//透明通道回调函数
public void TransBuffer_CallBack(int userId, IntPtr buf, int len, int userValue)
{
try
{
if (hallForm != null)
hallForm.TransBuffer_CallBack(userId, buf, len, userValue);
}
catch (Exception ex)
{
Log.SetLog("VideoChat.Login.TransBuffer_CallBack TransBuffer_CallBack:" + ex.Message.ToString());
}
} 源代码中hallForm.TransBuffer_CallBack是个空函数,在这个函数里写的代码不执行 您好,需要在客户端向服务器发数据(Userid=0)时,才会触发服务器的回调函数的!
页:
[1]