2015-03-04 2 views
0

J'essaye d'écrire une sorte de navigateur de service avec Avahi. La découverte et la résolution de nouveaux services fonctionnent très bien, mais je suis confronté à un problème lorsque j'essaie de résoudre un service qui a été perdu dans le gestionnaire ItemRemoved. L'erreur "org.freedesktop.Avahi.TimeoutError: Timeout reached" se produit. Je suppose que je le fais mal, donc ma question est:Comment résoudre les détails de service perdus (Avahi, ZeroConf)?

Comment puis-je résoudre l'adresse IP du service perdu dans le gestionnaire ItemRemoved?

Répondre

0

Si un service est supprimé, vous ne pourrez pas le résoudre car le service n'existe plus. Ses enregistrements ne sont plus valides. Ce que vous devez faire est d'utiliser le nom de service DNS-SD (par exemple My Print Service._http._tcp) comme la clé que vous stockez et supprimez des éléments de votre cache interne.

Idéalement, vous ne résolvez le service que lorsque vous avez réellement besoin de vous y connecter, cela permet à la fois de réduire le trafic réseau et de garantir que l'adresse IP est à jour/valide lorsque vous l'utilisez. Une fois résolu si vous stockez l'adresse IP avec le nom du service, vous avez ce dont vous avez besoin.

+0

Merci de me répondre, peut être utile à l'avenir. Malheureusement, je n'ai pas réussi à mettre en cache les noms des services, car le format du dossier du service m'avait été imposé et je ne pouvais stocker que l'adresse IP et le numéro de port. – Buyuk

+0

Pourquoi ne pouvez-vous pas conserver un cache interne du nom aux résolutions IP que vous avez précédemment effectuées? –

+0

Dans le cas de la liste de services que je garde, c'est un fichier qui doit être conservé dans un ; ; ... format. Il doit être stocké de manière persistante sur le disque dur, donc je devrais stocker un autre fichier avec les résolutions IP-SERVICE_NAME comme vous l'avez suggéré. Ce n'est pas possible, car je ne peux pas créer de fichiers temporaires. – Buyuk