2016-08-02 3 views
3

NSD를 사용하여 특정 네트워크 서비스를 찾을 때 android documentation을 읽었습니다. 아래 코드는 사용 가능한 모든 서비스를 찾을 수 있습니다. _http._tcp 서비스.Android의 기본 네트워크 서비스를 사용하여 사용 가능한 모든 서비스를 찾는 방법

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); 

이 시점까지 모든 것이 올바르게 작동합니다. 그러나이 방법을 사용하는 네트워크에서 모든 사용 가능한 서비스 을 찾는 방법이 궁금합니다. 나는 다른 서비스의 다스가 볼 수있다 (예를 들어 _ipp._tcp, _airport._tcp, _airplay._tcp, _atc._tcp 그리고 더 많은) Zeroconf를 검색 응용 프로그램을 사용하여 내 로컬 네트워크에서 사용할 수 Google Play 스토어에 있습니다.

개발자 페이지에서 정보를 찾을 수 없어 단일 검색 수신기를 통해 사용 가능한 모든 서비스를 수집 할 수있는 와일드 카드가 있습니까?

+0

이 문제에 대한 해결책을 찾았습니까? – Rebirth

+0

@Rebirth 불행히도 아닙니다. 그러나 안드로이드의 NDS를 사용하고 싶지 않다면 아마도 [JmDNS] (http://jmdns.sourceforge.net/)와 같은 제 3 자 라이브러리를 사용하는 것이 이것을 달성하기위한 좋은 선택이 될 것입니다. – waqaslam

답변

2

변화 _services._dns-sd._udp 내가 너무 가지고 있으며, 당신은 사용해야하지만 jmdns의 장 (9)는 말한다

+0

여기에 모든 서비스가 제공되지 않습니다. – sandeepmaaram

2

http://www.ietf.org/rfc/rfc6763.txt 작동하지에서 NSD 에서 작업 _services._dns을-sd._udp와 서비스 서비스 이름으로 열거 형을 가져옵니다. 이것은 NSD에서도 작동합니다

관련 문제