我發送給安卓單獨的按摩程序: 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
後再CONCAT它的第一部分第二次讀到\r\n
這就是這個例子:3 44 55 66 77 88 \r\n
基本上在一個連接會話它可能是2和一半的字符串要發送。
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);
你介意寫清楚嗎?也許你正在尋找'substring(int start,int end)'。第一個是包容性的,第二個是排他性的。 – Garamaru
好的。是。從點到點的子字符串將首先發送Str,但是當您不知道何時完成時,如何處理readMessage的最後部分。我的意思是readMassage是每次不同的長度。我發送到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我不會錯過任何字符,但.... – SyRus
永遠不要在評論中提供更多信息。編輯你的問題。無論如何你應該這樣做。提示:預覽窗口存在的原因。爲了防止你對你要求花時間幫助你解決問題的人傾倒如此混亂。 – GhostCat