我已经阅读了 Android 上关于使用 NSD 查找特定网络服务的文档。以下是我的代码,用于发现所有可用的 _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);
到目前为止,一切都运行良好。然而,我想知道如何使用这种方法找到网络上所有可用的服务?我可以看到使用在Google Play商店上找到的ZeroConf浏览应用程序有很多不同的服务(例如_ipp._tcp,_airport._tcp,_airplay._tcp,_atc._tcp等)在我的本地网络上可用。是否有任何通配符可以通过单个发现监听器收集所有可用的服务,因为我在开发人员页面上找不到这样的信息?