I've read through android documentation on finding specific network services using NSD. Below is my code to discover all the available _http._tcp
services.
final NsdManager.DiscoveryListener discoveryListener = new NsdManager.DiscoveryListener() {
@Override
public void onDiscoveryStarted(String s) {
Log.i(TAG, "onDiscoveryStarted: " + s);
}
@Override
public void onServiceFound(NsdServiceInfo nsdServiceInfo) {
Log.i(TAG, "onServiceFound: " + nsdServiceInfo.toString());
}
@Override
public void onServiceLost(NsdServiceInfo nsdServiceInfo) {
Log.i(TAG, "onServiceLost: " + nsdServiceInfo.toString());
}
@Override
public void onDiscoveryStopped(String s) {
Log.i(TAG, "onDiscoveryStopped: " + s);
}
@Override
public void onStartDiscoveryFailed(String s, int i) {
Log.i(TAG, "onStartDiscoveryFailed: " + s);
}
@Override
public void onStopDiscoveryFailed(String s, int i) {
Log.i(TAG, "onStopDiscoveryFailed: " + s);
}
};
final NsdManager manager = (NsdManager) getSystemService(Context.NSD_SERVICE);
manager.discoverServices("_http._tcp", NsdManager.PROTOCOL_DNS_SD, discoveryListener);
Till this point everything's working fine. However, I'm wondering how to find all the available services on the network using this approach? I can see there are a dozen of different services (e.g. _ipp._tcp, _airport._tcp, _airplay._tcp, _atc._tcp and many more) available on my local network using ZeroConf browsing apps found on Google PlayStore.
Is there any wildcard that allows to gather all the available services through single discovery-listener since I couldn't find such information on developer pages?
Network service discovery (NSD) gives your app access to services that other devices provide on a local network. Devices that support NSD include printers, webcams, HTTPS servers, and other mobile devices.
Service discovery is the process of automatically detecting devices and services on a network. Service discovery protocol (SDP) is a networking standard that accomplishes detection of networks by identifying resources.
change your service with _services._dns-sd._udp i have too and it working in nsd but in jmdns its not working
http://www.ietf.org/rfc/rfc6763.txt chapter 9 says, you should use _services._dns-sd._udp as service name to get a enumeration of service names. This also works with NSD
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With