各位,本人非常缺乏网络编程相关经验,现在遇到一个问题是:通过蓝牙串口通信进行简单的文本传输,发送方给我发出一段文本,文本以"\r\n"结尾。我通过inputStream.read(Bytes[])方式来读取,问题是我读的数据比较大,有500多byte的时候,我就会读到烂数据。下面是我读的代码段,各位看看,指点指点
// 1 如果没有读到结束符"\r\n",就一直读
while(!Fininshed)
{
try
//2 从蓝牙socket的inputStream读取byte流存入到Bytes[1024] bytes
size = mBufferedInputStream.read(bytes,0,1024);
}
catch(IOException e) {
Log.e(TAG,e.toString());
return false;
}
//3 byteConvertToString这个函数是将bytes数组暂存的byts存入StringBuffer result_read
byteConvertToString(result_read,bytes,size);//4 result_total是用来保存完整流的StringBuffer对象,这里想将每次得到的result_read追加到总StringBuffer 、、//result_total上
result_total.append(result_read);
//5 判断本次对到的流里是否包含有约定的结束符"\r\n",如果有,则表示已经读完了,设置flag Finished=true,退出循环
tmp=result_read.toString();
if(tmp.contains("\r\n")){
Fininshed=true;
}
}//6 最后一步,将得到的总StringBuffer转换为string,从而获得完整的String
result = result_total.toString();
// 1 如果没有读到结束符"\r\n",就一直读
while(!Fininshed)
{
try
//2 从蓝牙socket的inputStream读取byte流存入到Bytes[1024] bytes
size = mBufferedInputStream.read(bytes,0,1024);
}
catch(IOException e) {
Log.e(TAG,e.toString());
return false;
}
//3 byteConvertToString这个函数是将bytes数组暂存的byts存入StringBuffer result_read
byteConvertToString(result_read,bytes,size);//4 result_total是用来保存完整流的StringBuffer对象,这里想将每次得到的result_read追加到总StringBuffer 、、//result_total上
result_total.append(result_read);
//5 判断本次对到的流里是否包含有约定的结束符"\r\n",如果有,则表示已经读完了,设置flag Finished=true,退出循环
tmp=result_read.toString();
if(tmp.contains("\r\n")){
Fininshed=true;
}
}//6 最后一步,将得到的总StringBuffer转换为string,从而获得完整的String
result = result_total.toString();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货