【发布时间】:2010-12-08 04:04:29
【问题描述】:
我正在尝试通过蓝牙使用 SPP(在 Java 中,使用 BlueCove API)在两台 PC 之间传输文件(大小约为 6 MB 的 MP3)。我可以使文件传输在一个方向上正常工作(例如,一个文件从客户端到服务器),但是当我尝试在同一会话期间向相反方向发送任何数据时(即从服务器发送一个文件到客户端),程序冻结,不会前进。
例如,如果我只是:
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 来实现此功能吗?
【问题讨论】:
-
可以发一份客户端代码的总结吗?
-
Wire dumps(使用某种嗅探器)肯定会有所帮助。您可能想使用 Wireshark 之类的东西来转储它并附加到这个问题
标签: java file-upload bluetooth