Java/Android-读取Inputstream后写入Outputstream
在我的电脑上,我启动一个服务器,通过蓝牙向安卓手机发送字节。 我每10秒使用相同的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
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),它试图关闭该接口,但也不起作用。我也不想关闭它。最后我按照你建议的顺序做了。