Re: Android JmDNS vs. Android Network Service Discoveryã By: Nightfox to All on Thu Jun 09 2022 09:42 amãã > Recently I've been working on fixing bugs in an Android app, where one ofã > its main functions is to find network-connected printers and print to them.ã > It was originally using the JmDNS library to do the network discovery ofã > printers:
https://github.com/jmdns/jmdnsã >ã > I've been working on this app for the past few weeks, and suddenly this pastã > Monday, a weird issue started happing - The JmDNS library started to onlyã > give an ipv6 network address for our test printer (previously, it had beenã > giving an ipv4 address), and it seemed the ipv6 address it was giving wasã > incorrect, as the app couldn't ping and couldn't otherwise connect to theã > printer with that address.ã >ã > I found that Google added a network service discovery API to the Android SDKã > starting with SDK version 16:ã >
https://developer.android.com/training/connect-devices-wirelessly/nsdã > I updated the Android app to use the Android network service discovery APIã > instead of JmDNS, and I found the Android network service discovery returnsã > the correct network address for the printer (and is getting its ipv4ã > address). Now the app can connect and print to the printer again.ã >ã > I'm curious if anyone here has worked with network service discovery and hasã > seen anything weird like the issue I was having?ã >ã > The office where I work did have a power outage last weekend, and I wonderã > if that may have affected anything on our network to cause the issue I wasã > seeinig. But it seems like it was purely a software issue, so I don't reallyã > know why I started seeing that issue.ã >ã > Also, I feel like the official Android network service discovery API wouldã > probably be better to use than a 3rd-party library, but JmDNS is still inã > development (the latest version is from August 2021), so I imagine there mayã > be advantages of using it. I'm wondering why choose something like JmDNSã > over the Android network service discovery API?ããThe underlying system function is probably getaddrinfo (
https://linux.die.net/man/3/getaddrinfo) which provides the caller control over the inclusion/exclusion of address families (e.g. IPv4 or IPv6). I'm not familiar with JmDNS or the Android network service discovery API, but look for similar control over the address "families" that may be returned by such discovery functions.ã-- ã digital man (rob)ããRush quote #8:ãOne likes to believe in the freedom of music...ãNorco, CA WX: 77.2øF, 63.0% humidity, 2 mph E wind, 0.00 inches rain/24hrsã---ã þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.netã