2012-03-23 11 views
6

Tengo dos dispositivos Android. Uno está actuando como servidor y el otro como cliente. El cliente se conecta al servidor y solicita un archivo: esto se realiza en un hilo en el cliente y un hilo en el servidor para que ambos puedan continuar haciendo lo que quieran.¿Puedes establecer conexiones Bluetooth múltiples entre los mismos dos dispositivos en Android?

El cliente intenta volver a conectarse al servidor para solicitar otro archivo. En este momento estoy recibiendo un java.io.IOException: Device or resource busy cuando intento conectarme (socket.connect()). ¿Es porque Bluetooth (en Android) solo permite un canal entre dos dispositivos? (Si fuera otro dispositivo, funcionaría, pero si es el mismo no?) Tenga en cuenta que ambos intentos se realizan con el mismo nombre de servicio y UUID.

Incluso si el error es específico de mi código, me gustaría saber si este es el caso o no.

Sistema: android 2.2.1 se comunica con la biblioteca Bluecove bluetooth.

Respuesta

1

AFAIK, la conectividad múltiple no es posible en caso de conexión Bluetooth. Bluetooth es Conectividad La API está sincronizada de forma predeterminada, por lo que solo es posible una conexión a la vez. Entonces no puedes realizar conexiones múltiples.

Sin embargo, puede ser posible de otra manera, como hacer una conexión, realizar una operación de 2 segundos y luego crear otra conexión y realizar operaciones de 2 segundos, como sucede en el sistema operativo multitarea normal.

+1

amablemente proporcionar fuentes – CuriousSid

+0

Entonces, ¿puede explicar, por ejemplo, cómo puede una computadora portátil conectarse a través de Bluetooth a un teclado, un mouse y un auricular al mismo tiempo? – Nanoc

6

Definitivamente no con el mismo UUID (universalmente identificador UNIQUE). fue tomada

referencia para que a partir de here

Tal vez con más de uno. Puede conectar varios dispositivos en el estilo Servidor/Cliente, puede intentar configurar uno de los dispositivos como servidor e iniciar varios clientes por el otro. Mi primera suposición sería iniciar varios hilos del cliente, pero es posible que deba encontrar una forma de cambiar la dirección MAC para cada uno de ellos.

Here puede encontrar otra discusión sobre cómo cambiar su dirección MAC, pero solo funciona en dispositivos rooteados. No puedo encontrar nada más para los que no están enraizados. No tiene idea de cómo hacer esto programáticamente, pero podría darle un comienzo.

Here hay una discusión sobre la conexión de varios clientes al mismo tiempo en un servidor. Llegué allí desde this question. (Creo que esta podría ser su toma más cercana)

Here usted tiene una discusión sobre redes peer-to-peer.

+1

Pude establecer múltiples conexiones paralelas, anulando el registro del SDP en el canal actual y registrándolo de nuevo en un nuevo canal libre una vez que el canal actual se ha asignado como resultado de 'conectarse' desde el dispositivo. UUID ha sido lo mismo. El problema surge cuando 4-5 subprocesos simultáneos de clientes intentan conectarse. – CuriousSid

+0

No tengo ideas para eso. Como logró usar el mismo UUID, debería poder abrir 7 conexiones de cliente. Cuando obtiene el error ocupado, ¿todos los hilos dejan de funcionar o solo su último cliente no puede unirse a la red? – caiocpricci2

+0

solo el último cliente no puede unirse, ¿pero hay algo especial con 7? – CuriousSid

Cuestiones relacionadas