ネットワーク上のデバイスの追加と削除を検出するために JmDNS を使用しようとしています。追加は正常に機能し、それぞれのサービスが JmDNS に登録されるとすぐにデバイスが検出されますが、デバイスがネットワークから削除されると、デバイスは JmDNS に登録されません。
jmDns.list(serviceName)を定期的に呼び出してみましたが、常にキャッシュされた値を返すようです。
JmDNSに削除されたデバイスを登録させることは可能ですか?
サービスとサービスリスナーを登録するために使用したコードは次のとおりです(関連する部分のみ):
サービス:
JmDNS jmdns = JmDNS.create();
ServiceInfo service = ServiceInfo.create("_test._tcp.local.", "Test", 1234, 0, 0, false, "Test info");
jmdns.registerService(service);
サービスリスナー:
JmDNS jmDns = JmDNS.create();
jmDns.addServiceListener("_test._tcp.local.", new ServiceListener() {
@Override
public void serviceAdded(ServiceEvent event) {
System.out.println("Service added " + event.getInfo());
}
@Override
public void serviceRemoved(ServiceEvent event) {
System.out.println("Service removed " + event.getInfo());
}
@Override
public void serviceResolved(ServiceEvent event) {
System.out.println("Service resolved" + event.getInfo());
}
});
以前に登録されたデバイスの電源が入っていなくても、メソッドserviceRemoved()が呼び出されることはありません。問題を解決するために私が得ることができるどんな助けにもとても感謝しています.
更新: JmDNS は、デバイスがネットワークから欠落していることを認識しますが、それは 30 分後にのみです。この期間を短くすることは可能ですか?