码迷,mamicode.com
首页 > 移动开发 > 详细

Android--字符串处理

时间:2015-11-04 22:44:34      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

(1)双方约定每次发送报文都报文前几个字符表示长度信息,如下

原始报文是:ASDF

发送的socket报文是:0004ASDF

其中0004表示报文长度,接收方先接收四位的长度,再接收余下的报文。

 

(2)双方约定一个特殊的标志是结束符,比如约定 ==END== 表示结束

代码修改为while(!"==END==".equals(line = in.readLine()))就继续等待接收

这个特殊的结束符需要双方发送报文结束必须再发送的。

 

第一种解决方法是最常用的。自己接触的几个项目都是此种方式。

附加第一种方法的用法:

1、得到长度

byte[] head= new byte[5];// 双方约定前五位表示报文长度

in.read(msgHead, 0, head.length);// 首先读取报文长度信息

String headLength= new String(head, getEncoding());

int headLength= Integer.parseInt(headLength);

 

byte[] msgBody = new byte[msgLengthInt];// new一个报文长度大小的字节数组

in.read(msgBody, 0, msgBody.length);// 读取报文信息

byte[] recMsg = new byte[msgHead.length + msgBody.length];// 如有需要合并报文长度和报文信息

System.arraycopy(msgHead, 0, recMsg, 0, msgHead.length);

System.arraycopy(msgBody, 0, recMsg, msgHead.length, msgBody.length);

 

 

 

 

 

1

 

Android--字符串处理

标签:

原文地址:http://www.cnblogs.com/zrui513/p/4937353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!