Я прочитал документацию по поиску определенных сетевых служб с помощью НСД. Ниже приведен мой код для обнаружения всех доступных сервисов _http._tcp
.
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 PlayStore.
Есть ли подстановочный знак, который позволяет собрать все доступные сервисы через один прослушиватель обнаружения, поскольку я не смог найти такую информацию на страницах разработчиков?