public final class BonjourBrowser

  1. Object
  2. BonjourBrowser

Browses the local network for Bonjour / mDNS services.

Bonjour (“zeroconf” / “mDNS-SD”) lets clients find network services – a printer, a music server, another instance of your app – without knowing their IP address in advance. Services are advertised under a type such as _http._tcp. or your own private _myapp._tcp.. A BonjourBrowser watches for services of one type and notifies the listener whenever a service comes online or goes away.

Platform support

  • Android: android.net.nsd.NsdManager.
  • iOS: NSNetServiceBrowser + NSNetService. The build pipeline injects NSLocalNetworkUsageDescription and the service type into NSBonjourServices so iOS 14+ doesn’t block discovery.
  • Simulator: JmDNS is used when present on the classpath; otherwise discovery is a no-op and the listener is told the platform is unsupported.

Example

BonjourBrowser browser = BonjourBrowser.browse("_http._tcp.", new BonjourServiceListener() {
    public void onServiceResolved(BonjourService s) {
        Log.p("Found " + s.getName() + " at " + s.getHost() + ":" + s.getPort());
    }
    public void onServiceLost(BonjourService s) { /* ... */ }
    public void onBrowseError(Throwable t) { Log.e(t); }
});

// when finished
browser.stop();

Methods

public static BonjourBrowser browse(String type, BonjourServiceListener listener)Starts browsing for type and returns a handle to stop the search.
public static boolean isSupported()true if the platform implements Bonjour at all.
public String getType()The service type passed to browse(...).
public void stop()Stops this browser.

Inherited methods

Method details

browse

public static BonjourBrowser browse(String type, BonjourServiceListener listener)
Starts browsing for type and returns a handle to stop the search. type must be in mDNS form, e.g. _http._tcp. (trailing dot optional). listener is invoked on the EDT.

isSupported

public static boolean isSupported()
true if the platform implements Bonjour at all.

getType

public String getType()
The service type passed to browse(...).

stop

public void stop()
Stops this browser. Idempotent.