gpt4 book ai didi

Android - 蓝牙套接字关闭命令在 OutputStream 刷新之前执行

转载 作者:行者123 更新时间:2023-12-03 11:55:52 27 4
gpt4 key购买 nike

我有一个应用程序可以通过蓝牙与热敏打印机通信并打印数据。

我写入 outputStream,刷新以确保每个数据都被写入,然后关闭套接字。然而,实际发生的是 socket.close() 命令在所有内容打印出来之前执行,所以打印输出被切断了。

这是我写入数据的顺序(它在一个巨大的 try-finally block 中):

//open socket here, assign outputStream, write data to be printed


//after all those mmOutStream.write() statements, these are on the finally statement
mmOutStream.flush();

mmOutStream.close();
socket.close();

如您所见,我调用 flush 以确保写入所有数据,然后关闭流,然后关闭套接字。

但是,我认为实际发生的是 socket.close() 语句甚至在所有内容都已成功打印之前就已执行。

到目前为止,我所做的是在关闭语句之前放置一个 Thread.sleep() 命令,但这不是我想要的解决方案。

有谁知道如何确保在关闭套接字之前 OutputStream 实际上被刷新/清空?我查看了蓝牙套接字和 OutputStream 的文档,似乎没有一种直接的方法来做我想做的事情。

任何想法都会有所帮助。谢谢。

最佳答案

关闭套接字的输出流会刷新它并关闭套接字。关闭套接字本身是多余的。在您的实际代码中,它根本不应该做任何事情,因此在它之前添加一个 sleep 应该只是浪费时间。

您是否有任何实际的证据来证明您奇怪地认为您的程序没有按照编写的顺序执行。

我会尝试删除关闭套接字。

关于Android - 蓝牙套接字关闭命令在 OutputStream 刷新之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548807/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com