Как регистрация сервиса работает с NsdManager?
Я только начал работать с Multicast DNS, используя класс NSDManager для Android. Я наткнулся на пример NsdChat по этой ссылке https://android.googlesource.com/platform/development/+/master/samples/training/NsdChat/src/com/example/android/nsdchat/NsdHelper.java. В этом фрагменте кода регистрация службы довольно проста, но я хочу понять, как работает ее основной механизм, и я нигде не могу найти информацию.
public void registerService(int port) {
tearDown(); // Cancel any previous registration request
initializeRegistrationListener();
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setPort(port);
serviceInfo.setServiceName(mServiceName);
serviceInfo.setServiceType(SERVICE_TYPE);
mNsdManager.registerService(
serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
}
Если кто-то имеет опыт с этим и может объяснить это мне, это очень ценится. Это основные вопросы, о которых я могу думать прямо сейчас.
1) Когда вызывается registerService(), с кем приложение регистрирует этот сервис?
2) Как проходит процесс регистрации? Сохраняется ли такая информация, как имя и порт, где-то в таблице поиска, как DNS?
3) Если у кого-то есть диаграмма, объясняющая, как это работает, это было бы здорово.
Заранее спасибо.