How to find all available services using Android's native Network Service Discovery

倾然丶 夕夏残阳落幕 提交于 2020-01-01 10:14:55

问题


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?


回答1:


change your service with _services._dns-sd._udp i have too and it working in nsd but in jmdns its not working




回答2:


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



来源:https://stackoverflow.com/questions/38722634/how-to-find-all-available-services-using-androids-native-network-service-discov

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!