2015-03-04 2 views
0

Я пытаюсь написать какой-то сервис-браузер с Avahi. Обнаружение и разрешение новых сервисов работает очень хорошо, однако мне приходится сталкиваться с проблемой при попытке разрешить службу, которая была потеряна в обработчике ItemRemoved. «Ошибка org.freedesktop.Avahi.TimeoutError: Timeout достигнута». Я полагаю, что я делаю это неправильно, поэтому мой вопрос:Как разрешить потерянные данные сервиса (Avahi, ZeroConf)?

Как я могу разрешить IP-адрес потерянного сервиса в обработчике ItemRemoved?

ответ

0

Если служба удалена, вы не сможете ее решить, так как служба больше не существует. Это записи больше недействительны.

Что вам нужно сделать, это использовать имя службы DNS-SD (например, My Print Service._http._tcp) в качестве ключа, который вы храните и удаляете из своего внутреннего кеша.

В идеале вы разрешаете услугу только тогда, когда вам действительно нужно подключиться к ней, это помогает как снизить сетевой трафик, так и обновлять IP-адрес, когда вы собираетесь его использовать. После того, как вы решили сохранить IP-адрес вместе с именем службы, у вас есть то, что вам нужно.

+0

Спасибо, что ответили мне, могут быть полезны в будущем. К сожалению, мне не удалось кэшировать имена сервисов, так как форматирование записи службы было навязано мне, и я мог хранить только IP и номер порта. – Buyuk

+0

Почему вы не можете сохранить внутренний кеш имени для IP-разрешений, которые вы ранее выполняли? –

+0

В случае списка услуг, который я сохраняю, его файл, который должен храниться в ; ; ... формат. Он должен постоянно храниться на жестком диске, поэтому мне нужно было бы сохранить другой файл с разрешениями IP-SERVICE_NAME, как вы предполагали. Это не может быть, поскольку я не могу создавать временные файлы. – Buyuk

Смежные вопросы