gpt4 book ai didi

java - 通过蓝牙使用 SPP 发送和接收文件的问题

转载 作者:行者123 更新时间:2023-11-29 03:59:41 27 4
gpt4 key购买 nike

我正在尝试使用 SPP 通过蓝牙(在 Java 中,使用 BlueCove API)在两台 PC 之间传输文件(MP3 大小约为 6 兆字节)。我可以使文件传输在一个方向上正常工作(例如,一个文件从客户端到服务器),但是当我尝试在同一 session 期间以相反方向发送任何数据时(即从服务器发送文件给客户端),程序会卡住,不会前进。

例如,如果我只是:

StreamConnection conn;
OutputStream outputStream;

outputStream = conn.openOutputStream();

....

outputStream.write(data); //Data here is an MP3 file converted to byte array

outputStream.flush();

传输工作正常。但如果我尝试:

StreamConnection conn;
OutputStream outputStream;
InputStream inputStream;
ByteArrayOutputStream out = new ByteArrayOutputStream();

outputStream = conn.openOutputStream();
inputStream = conn.openInputStream();

....

outputStream.write(data);
outputStream.flush();


int receiveData;
while ((receiveData = inputStream.read()) != -1) {
out.write(receiveData);
}

客户端和服务器都卡住,不会前进。我可以看到文件传输实际上在某个时刻发生,因为如果我终止客户端,服务器仍会将文件写入硬盘驱动器,没有任何问题。我可以尝试使用另一个文件或仅使用一个整数来响应,但它仍然无法正常工作。

有人知道问题出在哪里吗?我知道 OBEX 通常用于通过蓝牙传输文件,但对于我需要做的事情来说它似乎有点过分了。我是否必须使用 OBEX 才能实现此功能?

最佳答案

它可能很简单,因为两个程序都卡在阻塞接收调用中,等待另一端说些什么......尝试添加大量日志语句,以便您可以看到每个程序处于什么“状态”(即,所以它给你一个正在运行的评论,比如“试图接收”、“得到 xxx 数据”、“试图回复”等),或者设置调试,等到它卡住然后停止其中一个并单步执行它.

关于java - 通过蓝牙使用 SPP 发送和接收文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294815/

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