Может ли Bonjour просматривать службу с определенным именем?

Bonjour предоставляет метод "DNSSD.browse (serviceType, callBackObject)", который просматривает службы определенного типа. Если служба данного типа найдена, Bonjour вызывает callBackObject.serviceFound. Если служба потеряна, Bonjour вызывает callBackObject.serviceLost.

Я всегда рассматривал DNSSD.browse как метод мониторинга определенной службы. Bonjour отслеживает конкретную службу и вызывает необходимый метод, если служба найдена (доступна) или потеряна (недоступна).

Но потом я понял, что «DNSSD.browse» получает (в качестве аргумента) тип сервиса (например, «http .tcp») и может быть несколько сервисов этого типа. Таким образом, он, вероятно, вызывает "serviceFound" и "serviceLost", если какая-либо служба указанного типа обнаружена или потеряна, соответственно.

Но в моем приложении я хотел бы просмотреть только одну конкретную услугу. Как лучше всего это сделать? У меня есть два возможных решения:

  1. Когда я регистрирую услугу, я даю ей уникальный тип. Например: «server1. http .tcp».

  2. Я регистрирую службы с уникальными именами (не типами) и прошу Bonjour найти службы с определенными именами. Но я не уверен, что Bonjour предоставляет такую ​​возможность. Может ли он искать сервисы с определенными именами?


person Roman    schedule 14.03.2010    source источник


Ответы (1)


Ваш первый вариант кажется мне лучшим. К именам служб можно добавить имя экземпляра службы, чтобы ваша служба могла иметь имя, которое вы предлагаете (но с соответствующими знаками подчеркивания), «server1._http._tcp». С этим именем службы служба должна отображаться при просмотре "_http._tcp" и "server1._http._tcp", если вам нужен более конкретный запрос. DNSSD.browse должен полностью поддерживать имена служб этого типа.

person Per Knytt    schedule 15.03.2010