Отмена регистрации службы zeroconf с использованием jmDNS - PullRequest
2 голосов
/ 06 мая 2011

Я пытаюсь сделать так, чтобы мое приложение для Android регистрировало службу через zeroconf, пока приложение активно, а затем отменило регистрацию после выхода из приложения.В моем методе onResume у меня есть следующий код:

    // register ourselves with zero conf
    try {
        JmDNS jmdns = JmDNS.create();

        serviceInfo = ServiceInfo.create("_http._tcp.local.", "My App Service", SERVER_PORT, 0, 0, false, "path=/crazycatapp");
        jmdns.registerService(serviceInfo);
    } catch (Throwable t) {
        Debug.e("Error registering service with zeroconf", t);
    }

, а затем в моем методе onPause:

    if(serviceInfo != null) {

            // unregister ourselves with zero conf
            JmDNS jmdns = JmDNS.create();
            jmdns.unregisterService(serviceInfo);
        }
    } catch (Throwable t) {
        Debug.e("Error unregistering service with zeroconf", t);
    }

Я удалил код, поддерживающий многоадресную рассылку и т. Д.Дело в том, что я могу просто зарегистрировать сервис и впоследствии увидеть его, используя браузер zeroconf на другом устройстве.Однако после регистрации сервис никогда не исчезает, если я фактически не отключу Wi-Fi на устройстве, которое зарегистрировало сервис.Вызов unregisterService, похоже, фактически не влияет на регистрацию службы.unregisterAllServices, кажется, также не имеет никакого эффекта.У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 31 мая 2011

Посмотрев на соответствующий код в JmDNS Я думаю, вам следует отменить регистрацию вашего ServiceInfo в том же JmDNS экземпляре, в котором вы его зарегистрировали. Поэтому вам придется хранить ссылку jmdns в своем фрагменте регистрации и вызывать отмену регистрации для этого, а не новый экземпляр, который вы создаете в своем фрагменте отмены регистрации.

...