Відповіді:
Інструмент dns-sd
командного рядка може бути корисним для цього, але навчитися користуватися ним трохи складно.
Запуск dns-sd -B _services._dns-sd._udp
поверне список усіх доступних типів послуг, які наразі рекламуються. (Список складається за інтерфейсом, тому буде деяка надмірність.) Якщо це робиться на Mac без активного підключення до мережі, список, звичайно, містить лише сервіси, що працюють на цій машині.
Використовуючи цей список, ви можете запитувати інформацію про окремі типи послуг, виконуючи такі речі dns-sd -B _home-sharing._tcp
(які перераховують екземпляри iTunes Home Sharing), а потім, давши ім'я примірника, ви можете запустити dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcp
пошук інформації для конкретного примірника.
Якщо чесно сказати, то весь цей процес є досить стомлюючим, і саме для цього було створено Discovery (раніше браузер Bonjour), тому я дуже рекомендую використовувати це. Хоч би яким чином ви це не зробили, не завжди може бути зрозуміло, яка програма відповідає за дану послугу.
Ви можете використовувати стратегію, надану у відповіді binarybob, щоб спробувати відобразити записи сервісу для запущених процесів на основі номера порту, але це може не завжди працювати. Інша стратегія - запустити щось на зразок, dns-sd -B _home-sharing._tcp
що залишається відкритим, і звітувати, коли екземпляри додаються чи видаляються, потім, по черзі, запускайте різні програми та (припускаючи, що це не системна служба), дивіться, який із вихідних викликає повідомлення про видалення.
Хоча це може не відповідати вашим точним критеріям, браузер Tildesoft Bonjour може перелічити всі послуги Bonjour, розміщені у вашій локальній мережі, та господарів, які їх рекламують.
Я думаю, що для локально розміщених сервісів ви можете скористатись браузером Bonjour, щоб знайти номер порту, на якому рекламується послуга, а потім скористайтеся lsof
для визначення додатка, пов’язаного з ним, наприклад:
lsof -i | grep 57857
дає
iTunes 36720 ... TCP *:57857 (LISTEN)
коли у мене працює iTunes.
Хоча це класифікується як застаріла стаття, саме це ви можете шукати: DNSServiceMetaQuery. Як зазначено в документації:
Цей зразок використовує DNSServiceQueryRecord для надсилання запиту багатоадресної DNS, який повертає список типів послуг Bonjour, які рекламуються в локальній мережі. Для відповіді на цей запит машини повинні мати mDNSResponder-58.6 (Mac OS X 10.3.4) або пізнішої версії.
Щоб запустити DNSServiceMetaQuery на Mountain Lion (включена збірка не працює належним чином), перейдіть до зразка кодового посилання та натисніть Завантажити зразок коду. Потім встановіть Xcode, якщо ви ще цього не зробили. Створіть новий проект під шаблоном Mac OS X> Застосування> Інструмент командного рядка .
Відкрийте та скопіюйте весь текст у нього ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.c
та вставте його у проект main.c
нового інструменту командного рядка (замінивши все, що там було в шаблоні). Далі вам потрібно додати CoreFoundation.framework до проекту, натиснувши назву проекту на бічній панелі> Фази збірки та відкрийте стрілку спадного меню поруч із Посилання Бінарне з бібліотеками. Натисніть +кнопку, знайдіть CoreFoundation.framework та додайте її. Потім натисніть кнопку «Запустити» (схоже на кнопку відтворення) і чекайте, коли зображення буде успішним. Щось повинно виходити з кнопки вікна з колодою; це відобразить усі ваші послуги Bonjour. Переконайтесь, що прапорець "Всі вихідні".
_daap
.