AnyChat技术支持论坛

标题: java客户端无法收到OnAnyChatTransBufferEx回调 [打印本页]

作者: 熊仔饼干    时间: 2014-6-23 16:34
标题: java客户端无法收到OnAnyChatTransBufferEx回调
你好,我的服务端和客户端都用java开发,而且在同一台电脑上,使用扩展透明通道传输数据。现在客户端登录后能收到OnAnyChatLoginMessage回调,而且客户端向服务器发送扩展透明通道数据时,服务器能收到,但是服务器向客户端发送扩展透明通道数据时,客户端的OnAnyChatTransBufferEx回调却没有触发。请问怎么解决?
作者: 佰锐科技    时间: 2014-6-23 17:03
有两种情况:
    1.服务器端向客户端发送数据时userid弄错了。
    2.客户端没有设置回调接收。
作者: 佰锐科技    时间: 2014-6-23 17:08
设置数据传输消息通知接口SetTransDataEvent
作者: 熊仔饼干    时间: 2014-6-23 17:15
佰锐科技 发表于 2014-6-23 17:08
设置数据传输消息通知接口SetTransDataEvent

回调接收设置了,看了一下调试信息,userid也没有弄错。。。
作者: 熊仔饼干    时间: 2014-6-23 17:28
廖斌 发表于 2014-6-23 17:19
hi,哦,那您试下发送透明通道数据,看行不行?如果透明通道数据可以,扩展却不行的话,可能是UDP问题。

和你说的一样,透明通道可以,扩展不行。但是有时候数据量比较大,透明通道发不了,所以只能用扩展通道。怎么解决呢?谢谢!
作者: admin    时间: 2014-6-23 17:31
您好,建议提供一下客户端的log,我们帮您分析一下。
作者: 熊仔饼干    时间: 2014-6-23 17:43
admin 发表于 2014-6-23 17:31
您好,建议提供一下客户端的log,我们帮您分析一下。

[2014-06-23 17:37:12(809)]        ---------------------------AnyChat Platform Core SDK Client Log---------------------------[2014-06-23 17:37:12(810)]        Load BRAnyChatCore.dll success!(V4.9 Build Time:Apr 29 2014 09:52:10)[2014-06-23 17:37:12(814)]        Load BRMiscUtil.dll success!(V4.9 Build Time:Apr 29 2014 11:57:58)[2014-06-23 17:37:12(886)]        Load BRMediaUtil.dll failed,multimedia functions will fail!(Error:126)[2014-06-23 17:37:12(888)]        Load BRMediaShow.dll success!(V4.9 Build Time:Apr 29 2014 11:57:55)[2014-06-23 17:37:12(894)]        Load BRMediaCore.dll success!(V4.9 Build Time:Apr 29 2014 11:58:15)[2014-06-23 17:37:12(922)]        Invoke        BRAC_Connect(192.168.1.200,8906)=0[2014-06-23 17:37:12(923)]        Invoke        LoginServer(username=ZHU_JIANG_HOSPITAL)[2014-06-23 17:37:12(991)]        CheckClientSocketLink         Connect(ip=192.168.1.200,port=8906)[2014-06-23 17:37:13(083)]        Server version: V4.9(Build Time:2014-04-29 11:58:53, Server OS:Windows)[2014-06-23 17:37:13(090)]        Message        OnConnect(bSuccess:1, errorcode=0)[2014-06-23 17:37:13(171)]        Message        OnLoginSystem(userid=-2,errorcode=0,username=ZHU_JIANG_HOSPITAL), msg deliver worked(0)[2014-06-23 17:37:13(180)]        Load BRMediaUtil.dll failed,multimedia functions will fail!(Error:126)[2014-06-23 17:37:13(212)]        Connection to streaming media server successfully!(udp delay:15ms)[2014-06-23 17:37:13(844)]        Success add upnp map(port:5773, tcp)[2014-06-23 17:37:13(855)]        Success add upnp map(port:49430, udp)

作者: 廖斌    时间: 2014-6-23 17:46
熊仔饼干 发表于 2014-6-23 17:43
[2014-06-23 17:37:12(809)]        ---------------------------AnyChat Platform Core SDK Client Log-------- ...

您好,日志提示库文件没有加载成功,可以将sdk包中bin\client中的所有库文件放到你的程序目录下面
作者: 熊仔饼干    时间: 2014-6-23 17:56
廖斌 发表于 2014-6-23 17:46
您好,日志提示库文件没有加载成功,可以将sdk包中bin\client中的所有库文件放到你的程序目录下面

全复制过去了,问题还是没解决……

[2014-06-23 17:54:06(090)]        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
[2014-06-23 17:54:06(091)]        Load BRAnyChatCore.dll success!(V4.9 Build Time:Apr 29 2014 11:59:32)
[2014-06-23 17:54:06(102)]        Load BRMiscUtil.dll success!(V4.9 Build Time:Apr 29 2014 11:57:58)
[2014-06-23 17:54:06(195)]        Load BRMediaUtil.dll success!(V4.9 Build Time:Apr 29 2014 11:57:03)
[2014-06-23 17:54:06(198)]        Load BRMediaShow.dll success!(V4.9 Build Time:Apr 29 2014 11:57:55)
[2014-06-23 17:54:06(202)]        Load BRMediaCore.dll success!(V4.9 Build Time:Apr 29 2014 11:58:15)
[2014-06-23 17:54:06(229)]        Invoke        BRAC_Connect(192.168.1.200,8906)=0
[2014-06-23 17:54:06(229)]        Invoke        LoginServer(username=ZHU_JIANG_HOSPITAL)
[2014-06-23 17:54:06(262)]        CheckClientSocketLink         Connect(ip=192.168.1.200,port=8906)
[2014-06-23 17:54:06(322)]        Server version: V4.9(Build Time:2014-04-29 11:58:53, Server OS:Windows)
[2014-06-23 17:54:06(339)]        Message        OnConnect(bSuccess:1, errorcode=0)
[2014-06-23 17:54:06(411)]        Message        OnLoginSystem(userid=-4,errorcode=0,username=ZHU_JIANG_HOSPITAL), msg deliver worked(0)
[2014-06-23 17:54:06(456)]        Connection to streaming media server successfully!(udp delay:16ms)
[2014-06-23 17:54:07(132)]        Success add upnp map(port:5925, tcp)
[2014-06-23 17:54:07(144)]        Success add upnp map(port:51525, udp)

作者: admin    时间: 2014-6-23 17:57
您好,建议升级客户端SDK、服务器到最新版本V5.0,从log看,您还是使用的老版本。
作者: 熊仔饼干    时间: 2014-6-24 09:11
admin 发表于 2014-6-23 17:57
您好,建议升级客户端SDK、服务器到最新版本V5.0,从log看,您还是使用的老版本。

你好,刚刚升级了最新版本,客户端还是接收不到扩展通道回调。
作者: 熊仔饼干    时间: 2014-6-24 09:12
熊仔饼干 发表于 2014-6-24 09:11
你好,刚刚升级了最新版本,客户端还是接收不到扩展通道回调。

[2014-06-24 09:07:21(195)]        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
[2014-06-24 09:07:21(195)]        Load BRAnyChatCore.dll success!(V5.0 Build Time:Jun 13 2014 19:49:43)
[2014-06-24 09:07:21(210)]        Load BRMiscUtil.dll success!(V5.0 Build Time:Jun 13 2014 19:48:01)
[2014-06-24 09:07:21(429)]        Load BRMediaUtil.dll success!(V5.0 Build Time:Jun 13 2014 19:46:58)
[2014-06-24 09:07:21(429)]        Load BRMediaShow.dll success!(V5.0 Build Time:Jun 13 2014 19:47:57)
[2014-06-24 09:07:21(429)]        Load BRMediaCore.dll success!(V5.0 Build Time:Jun 13 2014 19:48:19)
[2014-06-24 09:07:21(475)]        Invoke        BRAC_Connect(192.168.1.200,8906)=0
[2014-06-24 09:07:21(475)]        Invoke        LoginServer(username=ZHU_JIANG_HOSPITAL)
[2014-06-24 09:07:21(491)]        CheckClientSocketLink         Connect(ip=192.168.1.200,port=8906)
[2014-06-24 09:07:22(053)]        Server version: V4.9(Build Time:2014-04-29 11:58:53, Server OS:Windows)
[2014-06-24 09:07:22(053)]        Message        OnConnect(bSuccess:1, errorcode=0)
[2014-06-24 09:07:22(116)]        Message        OnLoginSystem(userid=-2,errorcode=0,username=ZHU_JIANG_HOSPITAL), msg deliver worked(0)
[2014-06-24 09:07:22(164)]        Connection to streaming media server successfully!(udp delay:23ms)
[2014-06-24 09:07:22(242)]        Success add upnp map(port:1539, tcp)
[2014-06-24 09:07:22(257)]        Success add upnp map(port:52632, udp)
作者: 廖斌    时间: 2014-6-24 09:13
熊仔饼干 发表于 2014-6-24 09:11
你好,刚刚升级了最新版本,客户端还是接收不到扩展通道回调。

您好,将服务器发送和客户端接收的代码贴上来看下
作者: 熊仔饼干    时间: 2014-6-24 09:41
廖斌 发表于 2014-6-24 09:13
您好,将服务器发送和客户端接收的代码贴上来看下

服务器发送代码:
public static void sendText(int anychatUserId, String text) {
                SG.getInfoHandler()
                                .debug(TAG,
                                                String.format("send text to user %s : %s",
                                                                anychatUserId, text));
                try {
                        byte[] buf = text.getBytes(NetworkSetting.CHARSET);
                        onError(AnyChatServerSDK.TransBufferEx(anychatUserId, buf,
                                        buf.length, 0, 0, 0, new AnyChatOutParam()));
                } catch (UnsupportedEncodingException e) {
                        SG.getInfoHandler().handleException(e);
                }
        }

客户端接收代码:
        @Override
        public void OnAnyChatTransBufferEx(int dwUserid, byte[] lpBuf, int dwLen,
                        int wparam, int lparam, int taskid) {
                SG.getInfoHandler().debug(TAG, "onanychatTransBufferEx");
                try {
                        String text = new String(lpBuf, NetworkSetting.CHARSET);
                        nlc.onReceiveText(text);
                } catch (UnsupportedEncodingException e) {
                        SG.getInfoHandler().handleException(e);
                }
        }
作者: 廖斌    时间: 2014-6-24 09:45
在初始化SDK之后,有设置SetTransDataEvent扩展透明通道回调数据接收吗?
作者: 熊仔饼干    时间: 2014-6-24 10:01
廖斌 发表于 2014-6-24 09:45
在初始化SDK之后,有设置SetTransDataEvent扩展透明通道回调数据接收吗?

设置了,昨天测试改为透明通道是能收到回调的,只是扩展通道不行。
作者: 廖斌    时间: 2014-6-24 10:05
熊仔饼干 发表于 2014-6-24 10:01
设置了,昨天测试改为透明通道是能收到回调的,只是扩展通道不行。

您可以在客户端开启调试模式,得到更多的日志,以便分析这个问题。调试模式的开启方法参考
http://www.anychat.cn/faq/index. ... =266&artlang=zh
也就是在Java工程根目录下面建立AnyChatSdk.ini,然后添加如下配置项
[Debug Settings]
OutputTransBuffer=1
OutputTransTask=1
OutputCallBackInvoke=1
OutputAPIInvoke=1
作者: 熊仔饼干    时间: 2014-6-24 10:16
廖斌 发表于 2014-6-24 10:05
您可以在客户端开启调试模式,得到更多的日志,以便分析这个问题。调试模式的开启方法参考
http://www.a ...

从日志上看,内核好像是收到扩展通道回调了,但为什么回调方法没有触发呢。。。

[2014-06-24 10:09:46(325)]        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
[2014-06-24 10:09:46(326)]        Load BRAnyChatCore.dll success!(V5.0 Build Time:Jun 13 2014 19:49:43)
[2014-06-24 10:09:46(332)]        Load BRMiscUtil.dll success!(V5.0 Build Time:Jun 13 2014 19:48:01)
[2014-06-24 10:09:46(404)]        Load BRMediaUtil.dll success!(V5.0 Build Time:Jun 13 2014 19:46:58)
[2014-06-24 10:09:46(406)]        Load BRMediaShow.dll success!(V5.0 Build Time:Jun 13 2014 19:47:57)
[2014-06-24 10:09:46(413)]        Load BRMediaCore.dll success!(V5.0 Build Time:Jun 13 2014 19:48:19)
[2014-06-24 10:09:46(446)]        BRAC_Connect---->
[2014-06-24 10:09:46(447)]        Invoke        BRAC_Connect(192.168.1.200,8906)=0
[2014-06-24 10:09:46(448)]        <----BRAC_Connect
[2014-06-24 10:09:46(448)]        BRAC_Login---->
[2014-06-24 10:09:46(449)]        Invoke        LoginServer(username=ZHU_JIANG_HOSPITAL)
[2014-06-24 10:09:46(449)]        <----BRAC_Login
[2014-06-24 10:09:46(509)]        CheckClientSocketLink         Connect(ip=192.168.1.200,port=8906)
[2014-06-24 10:09:46(651)]        Server version: V5.0(Build Time:2014-06-13 19:48:59, Server OS:Windows)
[2014-06-24 10:09:46(662)]        Message        OnConnect(bSuccess:1, errorcode=0)
[2014-06-24 10:09:46(668)]        Begin NotifyMsg Callback(msg:1, wParam:1, lParam:0)
[2014-06-24 10:09:46(669)]        End NotifyMsg Callback
[2014-06-24 10:09:46(732)]        Message        OnLoginSystem(userid=-6,errorcode=0,username=ZHU_JIANG_HOSPITAL), msg deliver worked(0)
[2014-06-24 10:09:46(740)]        Begin NotifyMsg Callback(msg:2, wParam:-6, lParam:0)
[2014-06-24 10:09:46(768)]        BRAC_TransBufferEx---->
[2014-06-24 10:09:46(769)]        Invoke        BRAC_TransBufferEx(dwUserid=0, buf[0]=0x5b, buf[131]=0x5d, len=132, rc=0, dwTaskId:15127)
[2014-06-24 10:09:46(769)]        <----BRAC_TransBufferEx
[2014-06-24 10:09:46(771)]        End NotifyMsg Callback
[2014-06-24 10:09:46(773)]        Connection to streaming media server successfully!(udp delay:15ms)
[2014-06-24 10:09:47(044)]        OnTransBufferExCallBack(dwUserId:0, buf[0]=0x5b, buf[73]=0x5d, len=74)
[2014-06-24 10:09:47(052)]        Begin TransBufferEx Callback
[2014-06-24 10:09:47(052)]        End TransBufferEx Callback
[2014-06-24 10:09:47(367)]        Success add upnp map(port:2548, tcp)
[2014-06-24 10:09:47(381)]        Success add upnp map(port:60755, udp)
[2014-06-24 10:09:47(466)]        Trans Task Status: srcUserId:0, tarUserId:-6, TaskId:7071, Status:3, Bitrate:0kbps
[2014-06-24 10:09:47(466)]        Trans Task Status: srcUserId:-6, tarUserId:0, TaskId:15127, Status:3, Bitrate:0kbps
[2014-06-24 10:09:48(476)]        Trans Task Status: srcUserId:0, tarUserId:-6, TaskId:7071, Status:3, Bitrate:0kbps
[2014-06-24 10:09:48(476)]        Trans Task Status: srcUserId:-6, tarUserId:0, TaskId:15127, Status:3, Bitrate:0kbps


作者: 廖斌    时间: 2014-6-24 10:21
熊仔饼干 发表于 2014-6-24 10:16
从日志上看,内核好像是收到扩展通道回调了,但为什么回调方法没有触发呢。。。

[2014-06-24 10:09:46 ...

是的,从日志来看,是收到数据了。你是怎么判断没有触发回调的呢?
作者: 熊仔饼干    时间: 2014-6-24 10:30
廖斌 发表于 2014-6-24 10:21
是的,从日志来看,是收到数据了。你是怎么判断没有触发回调的呢?

因为没有输出"onanychatTransBufferEx"的调试信息。
        @Override
        public void OnAnyChatTransBufferEx(int dwUserid, byte[] lpBuf, int dwLen,
                        int wparam, int lparam, int taskid) {
                System.out.println("onanychatTransBufferEx");
                try {
                        String text = new String(lpBuf, NetworkSetting.CHARSET);
                        nlc.onReceiveText(text);
                } catch (UnsupportedEncodingException e) {
                        SG.getInfoHandler().handleException(e);
                }
        }
作者: 廖斌    时间: 2014-6-24 10:50
熊仔饼干 发表于 2014-6-24 10:30
因为没有输出"onanychatTransBufferEx"的调试信息。
        @Override
        public void OnAnyChatTransBufferEx( ...

嗯,知道了,谢谢您的反馈!我们这边也排查下!
作者: 熊仔饼干    时间: 2014-6-24 10:59
廖斌 发表于 2014-6-24 10:50
嗯,知道了,谢谢您的反馈!我们这边也排查下!

嗯,我试了从服务器同时用扩展通道和透明通道向客户端发数据,客户端只有透明通道回调被触发,这可能是你们的一个bug。希望排查出结果后能在这里通告一声,谢谢!
作者: 廖斌    时间: 2014-6-24 11:03
熊仔饼干 发表于 2014-6-24 10:59
嗯,我试了从服务器同时用扩展通道和透明通道向客户端发数据,客户端只有透明通道回调被触发,这可能是你 ...

好的,谢谢你的反馈
作者: 廖斌    时间: 2014-6-24 11:59
廖斌 发表于 2014-6-24 11:03
好的,谢谢你的反馈

您好,问题找到了。将AnyChatCoreSdk.java中的OnTransBufferExCallBack改成
  1. private void OnTransBufferExCallBack(int userid, byte[] buf, int len,
  2.                         int wparam, int lparam, int taskid) {
  3.                 if (AnyChatCoreSDK.this.transDataEvent != null)
  4.                         AnyChatCoreSDK.this.transDataEvent.OnAnyChatTransBufferEx(userid,
  5.                                         buf, len, wparam, lparam, taskid);
复制代码
然后再试下,看能不能收到扩展透明通道数据
作者: 熊仔饼干    时间: 2014-6-25 09:43
廖斌 发表于 2014-6-24 11:59
您好,问题找到了。将AnyChatCoreSdk.java中的OnTransBufferExCallBack改成然后再试下,看能不能收到扩展 ...

可以了,谢谢!




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3