Я прочитал android documentation о поиске определенных сетевых сервисов с использованием NSD. Ниже приведен мой код, чтобы открыть все доступные услуги _http._tcp
.Как найти все доступные сервисы с помощью собственного сетевого сервиса Android Service Discovery
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.
Есть ли какой-либо подстановочный знак, позволяющий собирать все доступные сервисы с помощью единственного открытия-слушателя, поскольку я не мог найти такую информацию на страницах разработчиков?
Вы случайно нашли решение этой проблемы? – Rebirth
@Rebirth К сожалению, нет. Однако, если вы не хотите использовать NDS андроида, возможно, с помощью сторонней библиотеки, такой как [JmDNS] (http://jmdns.sourceforge.net/), будет хорошим вариантом для достижения этой цели. – waqaslam