android c++ 通信

大家好,接着问个问题:
最近在做一个通信APp,主要是android与C++服务端通信,现在遇到一个问题,是这样子的:
我一次性从服务端接收8000多个字节的数据(这些数据在C++端都是以结构体构造的),然后需要还原这些数据显示在android UI上面。我想请教如何从8000多个字节中高效便捷的截取数据?


不知道你是否是在Android端通过Socket收取数据,如果是你可以尝试这样收取数据,应该效率应该要高一些。首先可以通过在发送的数据前增加你要收取的数据长度,比如说DataLength:8000,之后你在手机端首先获取数据长度数据,然后再构建对应大小的Byte数组来收取,像下边这样:
byte[] _Byte = new byte[_Length];
m_InputStream.read(_Byte);
这样收取数据的效率要比while循环方式收取的方式要高很多。另外针对数据量非常大的数据,你也可以通过将数据分割成几段的方式多次发送,这样可以减少大数据量时丢包的机率。


很感谢您的回复!
我的确是使用socket通信,获取数据没有问题。
问题是,我获取数据之后,如何解析的问题,8000多个字节。在C++端他们使用结构体来存储数据,而在java端获取这些数据(byte[]字节数组),在Java中如果像C++那样构造一个结构体,即class,也是不可以直接copy这份数据给这个class啊,难道要一个一个的数吗?



你如果传数据的话,最好把数据转换成标准的JSON或XML格式传,这样的话两边都操作JSON或XML,就比较好解析了


恩,您说的很对。
但是根据实际情况,在C++那端压力太它,本来cpu以及内存资源很有限,所以不可能这样做,因为还牵扯到生成xml文件、解析xml文件以及更新。
不管怎么样,还是感谢你。祝您快乐,祝论坛越来越好!

来源:麦可网论坛


转载于:https://my.oschina.net/microoh/blog/143113

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值