默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
JAVA中Netty北斗协议服务端如何获取客户端发送来的文件流
阅读(12813) | 评论(5 收藏 淘帖 1

背景:
项目上需要与通讯手环通过TCP协议来数据交换,  其中有个功能就是 设备向服务器发送AMR文件的语音,
对应TCP报文转成字符串  [3G*9618201138*033B*TK,#!AMR……]

问题:
       1、TCP报文,我是应该直接拿16进制去转字符串吗?

      2、转成字符串后报文中  [3G*9618201138*033B*TK, 为业务报文, 真正的文件流是#!AMR……这一段,我该如何拿取这一段文件流,并且生成文件?

代码:
     相关netty代码为:
public class MyServerHandler extends SimpleChannelInboundHandler<String> {


    /**
     * 手表处理消息
     * 北斗协议
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {       log.info("新的消息 " + ctx.channel().remoteAddress() + " msg " + msg + "]");}

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:长连接网关技术专题(八):B站基于微服务的API网关从0到1的演进之路下一篇:长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进
推荐方案
评论 5
等于是,AMR语音文件的数据内容也转成文本一起传输?
引用:JackJiang 发表于 2023-03-14 16:23
等于是,AMR语音文件的数据内容也转成文本一起传输?

是的,因为我这边TCP解析都是以 符号 '['  开 始,   ']'结束的   我这边拿到的报文  [3G*9618201138*0383*TK,#!AMR
c<��c9��   7��m3��   6<��g5��   ���m3��   6<��g5��   ���m3��   6<��g5��   ���m3��   6<��g5��   ���m3��   6<��g5��   ���m3��   �.G��t9�� b"T'@�;Đ}�Q��T<�X��B}ň<B.�z��p)0<+��Jjj}�<����E�缘�@B����.���o����<��Z�� s�ʨ._��8T8�V�ֻX62���)��}W� ��G]  这样的
引用:李桑 发表于 2023-03-14 16:35
是的,因为我这边TCP解析都是以 符号 '['  开 始,   ']'结束的   我这边拿到的报文  [3G*9618201138*038 ...

这乱码贴的没有意义,你要么直接用wireshark这种工具,抓包,看看你发的数据是什么样的,直接看二进制包到底是不是对的。转码后这种乱码样的东西,啥也看不出来
引用:JackJiang 发表于 2023-03-14 16:23
等于是,AMR语音文件的数据内容也转成文本一起传输?

我可以拿原始的 16进制ByteBuf,但是我必须得转成字符串才知道内容是什么, 根据他包含业务代码TK,我才确定这条是语音信息,  需要去获取AMR文件,就导致 AMR直接就是字符串内容了。我应该怎么做才能转回amr文件
引用:李桑 发表于 2023-03-14 16:38
我可以拿原始的 16进制ByteBuf,但是我必须得转成字符串才知道内容是什么, 根据他包含业务代码TK,我才 ...

你应该自已先写简单的Demo代码做实验:不需要网络,你直接把AMR文件读取出来转文本,再从文本转回来,你看看那文件数据还不能不能回来,如果能,你就用到你的产品代码里
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部