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(流結束)。
我對不對?還是應該實現我自己的確定機制,是否收到所有發送的數據(或者我應該等待更多才能完成當前塊)?