我在取自 BluetoothChat 示例的 ConnectedThread 的 run() 方法中创建了以下过程。
// Read from the InputStream
byte[] buffer = new byte[16];
int offset = 0;
while(buffer.length-offset != 0)
{
int bytesRead += mmInStream.read(buffer, offset, buffer.length-offset);
offset += bytesRead;
}
// Do stuff with the contents of the buffer
缓冲区按预期逐渐加载了 16 个字节,但由于某种原因,在数组的第 10 个字节处插入了 0 并移动了包的其余部分(因此破坏了整个包)
这是正在发生的事情的一个例子
以下是从另一个客户端发送的:
[-11、126、-16、-30、-92、110、-26、13、22、91、-31、32、54、-125、-112、45]
这是我收到的:
[-11、126、-16、-30、-92、110、-26、13、22、91、0、-31、32、54、-125、-112]
如您所见,一个额外的 0 被推入作为第 10 个字节,并且包的其余部分向右移动(切断最后一个字节)
作为调试过程的一部分,我们尝试在整个原始消息bytesRead += mmInStream.read(buffer, offset, buffer.length-offset)
处设置断点,令我们惊讶的是。是什么赋予了?
阅读中的“休息”如何纠正这个问题?我在做什么错或不理解?