android c++ 通信

原创
2013/07/08 11:28
阅读数 305
大家好,接着问个问题:
最近在做一个通信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文件以及更新。
不管怎么样,还是感谢你。祝您快乐,祝论坛越来越好!

来源:麦可网论坛


展开阅读全文
打赏
1
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
1
分享
返回顶部
顶部