servidor - sockets java multiples clientes
¿Puede Android soportar Zeroconf/Bonjour sobre Bluetooth? ¿Qué hay de TCP/IP? (3)
Hay un par de razones por las que esto no es posible actualmente. La que más se relaciona con su pregunta es que, como probablemente experimentó, jmDNS requiere un enlace TCP / IP para publicar o examinar servicios (requiere una dirección IP para vincularse). Como lo indican las otras respuestas y comentarios, necesitaría un enlace PANU establecido para eso, que Android actualmente no proporciona.
Las otras razones por las que no funcionará son:
- Apple usa un par de mecanismos para asegurar que los dispositivos iOS solo hablen con otros dispositivos iOS. Así que incluso si consigues que Android hable sobre Bonjour por Bluetooth, solo funcionará de Android a Android.
- Los dispositivos certificados de Apple en el programa MFi tienen un chip criptográfico especial suministrado por Apple. No estoy seguro de que esto se aplique también a las conexiones de Bonjour por Bluetooth, pero supongo que sí.
En su lugar, podría considerar el uso de Bluetooth 4 LE: al menos hay una API de Apple que comienza en iOS 5 y proporciona un perfil de esclavo y se extiende para admitir un perfil maestro en iOS 6.
En el iPhone, si creo un servicio personalizado, por ejemplo, "_test._tcp.local". En Bonjour puedo buscar / transmitir este servicio a través de WiFi y / o Bluetooth.
¿Es posible en Android?
Sé que hay jmDNS pero por lo que entiendo funciona solo a través de WiFi / red, no Bluetooth.
Gracias
EDITADO por Seva Alekseyev, quien ofreció la recompensa: no estoy buscando soluciones (como Zeroconf sin Bluetooth o Bluetooth sin Zeroconf). Estoy detrás de la cosa real.
Puede usar BluetoothSocket y BluetoothServerSocket para crear sockets tipo TCP a través de Bluetooth.
Aquí hay una muestra de Android dnssd: https://github.com/twitwi/AndroidDnssdDemo
Es posible que deba modificar la biblioteca jmdns para que cree sockets de bluetooth si el bluetooth está activado, de lo contrario crea sockets simples. Encapsule la comunicación de socket en una clase diferente que crea socket condicionalmente.
No está en el bluetooth, porque Android actualmente no es compatible con TCP / IP a través del bluetooth, y el soporte NSD nativo de Android ( descubrimiento de servicio de red ) funciona sobre IP.
SÍ, sin embargo, funciona a través de Wi-Fi. Además, Android admite la detección de servicios a través de Wi-Fi Direct, lo que le brinda mayor alcance y eficiencia de batería que el bluetooth. Para obtener una guía sobre cómo integrar el descubrimiento de servicios en una aplicación habilitada para wi-fi directo, consulte la lección de capacitación de Android .
Algunas partes de esta respuesta están duplicadas de nuestra respuesta de video Estimado de Android a esta pregunta