我研究了android蓝牙的例子.
令我感到困惑的是,其他设备已发送连接请求,并且如果以前的连接存在,服务器只是被阻止了很长时间而没有被接受.
是否有可能执行服务器套接字并接受许多连接而不仅仅是一个连接的Android设备?是否有任何原因可能导致被accept()阻止的服务器,例如,错误的UUID或类似的东西?
我做的操作如下,
因为第一个连接成功,我不会在第二个连接上更改UUID.所以我认为UUID不是关键.建立第一个连接后,服务器套接字将等待另一个连接.可悲的是,它只是等待和阻止,不接受作为第一个连接.
public void run() {
if (D) Log.d(TAG, "BEGIN ServerSocketThread" + this);
BluetoothSocket socket = null;
while(true) {
try {
Log.i(TAG, "[ServerSocketThread] Enter while loop");
socket = mmServerSocket.accept();
Log.i(TAG, "[ServerSocketThread] Got client socket");
} catch (IOException e) {
Log.e(TAG, "accept() failed", e);
break;
}
if (socket!=null) {
synchronized (BluetoothConnService.this) {
Log.i(TAG, "[ServerSocketThread] "+socket.getRemoteDevice()+" is connected.");
ConnectedThread tmpThread = new ConnectedThread(socket);
tmpThread.start();
break;
}
}
}
BluetoothConnService.this.startSession();
}
Run Code Online (Sandbox Code Playgroud)
它是服务器套接字线程的一部分.每当我想进行第二次连接时,logcat显示它将在日志" [ServerSocketThread] …