Subj : Android JmDNS vs. Android Network Service Discovery
To   : Nightfox
From : Digital Man
Date : Thu Jun 09 2022 10:57 am

 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