0
我正在实施通过两个Android设备之间的蓝牙在Android中发送数据。为了简单起见,我将主要传递字符串并将它们解析为JSON或其他字符串格式。在Android中通过蓝牙发送字符串(字节)
现在我想知道,我应该如何读取数据以确保我已收到所有这些数据?目前,我采取以下做法:
byte[] buffer = new byte[1024];
while (!finished) {
// My class
MemoryStream ms = new MemoryStream();
int bytesRead = 0;
do {
bytesRead = input.read(buffer, 0, buffer.length);
ms.write(buffer, 0, bytesRead);
} while (bytesRead == buffer.length);
// Now process data
}
然而,这种方法仅当作为被另一台设备上发送inputStream.read()
总是返回的字节数。例如,假设第一个设备发送1234字节,第一个调用read
将返回1024,第二个210.或者如果第一个设备发送1024个字节,则首先调用read
将返回1024个字节, -1(流结束)。
我对不对?还是应该实现我自己的确定机制,是否收到所有发送的数据(或者我应该等待更多才能完成当前块)?