Может ли Bonjour просматривать сервис с определенным именем? - PullRequest
2 голосов
/ 14 марта 2010

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

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

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

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

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

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

1 Ответ

1 голос
/ 15 марта 2010

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

...