JmDNS no funciona correctamente en android 4.1
JmDNS
Estoy implementando JmDNS como sigue aquí . Cuando se ejecuta el código en mi android 2.3.5 htc Evo puedo descubrir mi equipo linux. Sin embargo, cuando ejecuto el mismo código en mi samsung galaxia s3 (4.1.0) nada aparece. Lo que es extraño es que estaba trabajando en mi 4.1 hace una semana y ahora no lo es. He intentado la solución de otra persona aquí, pero no hay suerte. Si alguien ha experimentado esto y podría arrojar alguna luz sobre por qué pan de jengibre está trabajando con jmdns pero no jellybean.
- Implementación de Bonjour en Android
- La compilación de Android con jmDNS falla
- Descubrimiento del dispositivo de red
- Xamarin.Android JmDNS vinculante cuestiones
- Android - jmdns no descubre los dispositivos
Aclaración:
Mi dispositivo Android 4.1 no resuelve ningún servicio, excepto los que se crean desde el dispositivo. Mi dispositivo 2.3 resolverá los servicios excepto los creados desde el dispositivo 4.1. Podría ser ip6 a ip4?
- Cómo resolver un nombre de dominio Bonjour con JmDNS
- JmDNS: No se puede resolver el servicio
- Jmdns registra en la interfaz IPv4, pero transmite IPv6
- Implementación de android como un servidor (receptor) en airplay
- Realizando operaciones de larga duración en onDestroy
- ¿Es Android NSD (Network Service Discovery) compatible con el servicio Bonjour en iOS?
Resuelto:
He seguido parcialmente el consejo aquí, pero en lugar de crear (String hostName) que he creado (InetAddress addr).
String ip = Formatter.formatIpAddress(wifiManager.getConnectionInfo().getIpAddress()); _bindingAddress = InetAddress.getByName(ip); _jmdns.create(_bindingAddress);
Estoy bastante seguro de que el siguiente código está funcionando en mi teléfono (android 4.1), para cualquier otra referencia ~
WifiManager wifi=(WifiManager)getSystemService(android.content.Context.WIFI_SERVICE); WifiInfo wifiinfo = wifi.getConnectionInfo(); int intaddr = wifiinfo.getIpAddress(); byte[] byteaddr = new byte[] { (byte) (intaddr & 0xff), (byte) (intaddr >> 8 & 0xff), (byte) (intaddr >> 16 & 0xff), (byte) (intaddr >> 24 & 0xff) }; InetAddress addr=InetAddress.getByAddress(byteaddr); //Need to process UnknownHostException jmdns=JmDNS.create(addr);