我发送给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然后下次连接建立得到休息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个半的Str String来发送。
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);
答案 0 :(得分:0)
您可以使用String类的substring()
方法,如下所示:
readMessageString.substring(readMessageString.lastIndexOf("\r\n"),
readMessageString.length());
然后将该子字符串添加到下一个String。
希望它有所帮助!