im发送到android单独消息:11 22 33 44 55 66 77 88\r\n 11 22 33 44 55 66 77 88\r\n 11 22 33 44 55 66 77 88\r\n。
但是当连接建立到缓冲区readmassage时随机获取它可能是11 22 33 44 55 66 77 88\r\n 11 22 33 4,然后下一次连接建立时获取rest 4 55 66 77 88\r\n 11 22 33 44 55 66 77 88\r\n我没有丢失任何字符,但是。。。。但要知道如何把它解析成正确的独立信息。
所以我要做的是把这个生成器拆分成一个字符串 \r\n
把它送得更远 11 22 33 44 55 66 77 88 \r\n
. - 砰
但在这里,我不仅需要先把它们分开,而且还要以某种方式捕捉第一次阅读后的最后一部分 \r\n
在这个例子中 11 22 3
然后把它连到第一部分,第二部分,一直读到第二部分 \r\n
这是一个例子: 3 44 55 66 77 88 \r\n
基本上,在一个连接会话中,可以发送2.5个str字符串。
public void run() {
Log.d(TAG2, "run start");
byte[] buffer = new byte[512]; // buffer store for the stream
int intBytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
StringBuilder readMessage = new StringBuilder();
while (true) {
try {
intBytes = mmInStream.read(buffer);// считываю входящие данные побайтно из потока
String readed = new String(buffer, 0, intBytes); //и собираю в строку ответа
readMessage.append(readed);
if(readMessage.toString().contains("\r\n")){
String Str = readMessage.toString();
Str = Str.replace("\n", "");
// DO SOMETHING HERE with Str So the on one readMessage it could be two different Str to send in farther. And part of the next Str save some how
mHandler.obtainMessage(MESSAGE_READ, Str.length(), -1, Str).sendToTarget();
readMessage.setLength(0);
1条答案
按热度按时间gblwokeq1#
你可以用
substring()
string类的方法如下:然后将子字符串前置到下一个字符串。
希望有帮助!