Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Android-读取Inputstream后写入Outputstream_Java_Android_Bluetooth_Inputstream_Outputstream - Fatal编程技术网

Java/Android-读取Inputstream后写入Outputstream

Java/Android-读取Inputstream后写入Outputstream,java,android,bluetooth,inputstream,outputstream,Java,Android,Bluetooth,Inputstream,Outputstream,在我的电脑上,我启动一个服务器,通过蓝牙向安卓手机发送字节。 我每10秒使用相同的Outputstream发送不同的字节 outputStream.write(buffer); outputStream.flush(); thisThread.sleep(10000); 缓冲区是一个字节数组,它改变每个循环 现在我想读取Android手机上的缓冲区: while((bytes = inputStream.read(buffer)) != -1) { //do something } //d

在我的电脑上,我启动一个服务器,通过蓝牙向安卓手机发送字节。 我每10秒使用相同的Outputstream发送不同的字节

outputStream.write(buffer);
outputStream.flush();
thisThread.sleep(10000);
缓冲区是一个字节数组,它改变每个循环

现在我想读取Android手机上的缓冲区:

while((bytes = inputStream.read(buffer)) != -1) {
  //do something
}
//do more
我现在的问题是read(buffer)不会返回-1。 我如何才能通知Android手机字节已被传输,以便我可以这样做 while循环之后我想要的东西?

试试这个

while((bytes = inputStream.read(buffer)) > 0)
{
//
}

你试过关闭电脑端的连接吗?从你的例子来看,你似乎没有


[编辑]如果您不想关闭PC端的连接,则发送已知的字节序列,该序列将向ANDROID应用程序指示PC端已完成数据发送,即正在等待响应

我更喜欢对象流,它解决了此类问题从未尝试过objectstream,以前从未听说过它。因此,我必须将bytearray转换为一个对象,并调用ObjectOutputStream.writeObject(object)?ObjectStreams是java最好的想法之一。您的类必须实现可序列化接口(这只是一种形式,没有函数),然后您创建一个ObjectOutputStream:new ObjectOutputStream(someOtherStream),它试图关闭该接口,但也不起作用。我也不想关闭它。最后我按照你建议的顺序做了。