我的android智能手机是tcpclient而chipkit wf32 wifi模块是我的tcp服务器。
int bytesRead;
InputStream inputStream = socket.getInputStream();
while ((bytesRead = inputStream.read(buffer)) != -1){
byteArrayOutputStream.write(buffer, 0, bytesRead);
response += byteArrayOutputStream.toString("UTF-8");
}
上面的代码从流中读取数据并复制到缓冲区。如果没有数据将会阻止。但有时我得到-1。有人能解释获得-1的原因吗?在文档中提到"到达流的末尾"。但你能解释一下这个意思吗?谢谢。
答案 0 :(得分:1)
如果您可以阅读文档,则会看到-1
表示流的结束:
InputStream.read()
因此获得-1
很自然。
答案 1 :(得分:0)
Oracle 说:
从输入流中读取下一个数据字节。值字节是 返回为0到255范围内的int。如果没有可用的字节 因为已到达流的末尾,值为-1 回。此方法阻塞,直到输入数据可用,结束 检测到流,或抛出异常。子类必须 提供这种方法的实现。
返回: 数据的下一个字节,如果到达流的末尾则为-1。