我正在使用Bluecove API为我的电脑构建一个简单的Java蓝牙服务器。我也正在构建一个Android客户端应用程序,但问题似乎源自服务器端应用程序。
我确定有人已经在某个地方发布了答案,我已经尝试了不同的解决方案数天,并查看了每个可能的论坛,但我似乎无法保持套接字线程上的连接处于活动状态。
在从Android到计算机建立连接后,我可以进行消息交换,反之亦然,但是在交换字节后,Bluecove堆栈关闭并关闭套接字连接,即使我没有显式地告诉它connection.close()。
我尝试使用while(某个语句为true)循环来保持连接处于活动状态,它不再在接收到第一条消息后关闭套接字,但当我尝试从智能手机发送任何后续消息时,它无法接收任何新消息。虽然它基本上是活的,但却不知道为什么不能接收任何新消息。
对不起,这是我第一次发布,我不知道为什么代码的第一部分无法正确显示在页面上。
代码建立连接:
我确定有人已经在某个地方发布了答案,我已经尝试了不同的解决方案数天,并查看了每个可能的论坛,但我似乎无法保持套接字线程上的连接处于活动状态。
在从Android到计算机建立连接后,我可以进行消息交换,反之亦然,但是在交换字节后,Bluecove堆栈关闭并关闭套接字连接,即使我没有显式地告诉它connection.close()。
我尝试使用while(某个语句为true)循环来保持连接处于活动状态,它不再在接收到第一条消息后关闭套接字,但当我尝试从智能手机发送任何后续消息时,它无法接收任何新消息。虽然它基本上是活的,但却不知道为什么不能接收任何新消息。
对不起,这是我第一次发布,我不知道为什么代码的第一部分无法正确显示在页面上。
代码建立连接:
public BluetoothServer() {
try {
service = (StreamConnectionNotifier)
Connector.open("btspp://localhost:" + new UUID(0x1101).toString() +
";name=SampleServer");
System.out.println("open connection");
while (runState == true) {
connection = (StreamConnection) service.acceptAndOpen();
//send a greeting across to android
outputStream = connection.openOutputStream();
String greeting = "JSR-82 RFCOMM server says hello";
outputStream.write(greeting.getBytes());
//run thread that listens for incoming bytes through socket connection
Thread t = new Thread(new ConnectedThread(connection));
t.start();
}
} catch(IOException e) {}
}
监听传入数据的线程代码
public void run() {
try {
//open input stream to listen to data
inputStream = connection.openInputStream();
byte buffer[] = new byte[1024];
int bytes_read = inputStream.read(buffer);
String received = new String(buffer, 0, bytes_read);
System.out.println("received: " + received);
} catch(IOException e) {}
}