我有两个应用程序。通过wifi相互连接。我正在使用 InputStream 读取从服务器应用程序发送的数据。代码是标准一,
try {
bytesRead = mmInStream.read(buffer, 0, 6300);//read(buffer);
Logger.d(TAG, "Bytes read from inStream : "+bytesRead);
if (-1 != bytesRead) {
handler.obtainMessage(12, bytesRead, -1, buffer).sendToTarget();
} else {
connectionLost();
}
} catch (Exception e) {
e.printStackTrace();
connectionLost();
}
在 connectionLost 方法中杀死和重置线程。我正在从服务器应用程序以 JSON 字符串形式发送接近 6kb 的数据。这在 5 次中有 3 次有效。
有时读取会返回 1.5kb 缓冲区,在第二次运行时它会提供其余数据。但与此同时,第一个 1.5 被发送到 JSON 解析器,这给了我错误。我打印了从服务器端写入 outputBuffer 的字节。它将每次写入 6k 字节。我想知道为什么有时 read() 方法在第二次尝试中只读取流的一半和其余部分?
我怎么知道它是读取了全部数据还是只读取了一半?我事先不知道服务器将发送多少字节。(我想出了数字,因为我正在调试代码。6k 以后可能会改变)。
先感谢您。在这个问题上纠结了两天。:(