Чи можу я перерахувати всі запущені служби Bonjour?


21

Мені було б цікаво дізнатися, які програми рекламують себе за допомогою Bonjour на моїй машині. Чи є спосіб це зробити?

Відповіді:


36

Інструмент 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що залишається відкритим, і звітувати, коли екземпляри додаються чи видаляються, потім, по черзі, запускайте різні програми та (припускаючи, що це не системна служба), дивіться, який із вихідних викликає повідомлення про видалення.


Схоже, послуга обміну музикою зараз називається _daap.
zneak

Власне, DAAP посилається на старіші з двох окремих форм обміну бібліотекою iTunes. DAAP увімкнено через Налаштування> Спільний доступ> Поділитися моєю бібліотекою в моїй локальній мережі. Домашній обмін, доданий в iTunes 9, увімкнено через Файл> Домашній обмін. Він використовує ваш Apple ID для аутентифікації.
Уес Кампань

5

Хоча це може не відповідати вашим точним критеріям, браузер Tildesoft Bonjour може перелічити всі послуги Bonjour, розміщені у вашій локальній мережі, та господарів, які їх рекламують.

Я думаю, що для локально розміщених сервісів ви можете скористатись браузером Bonjour, щоб знайти номер порту, на якому рекламується послуга, а потім скористайтеся lsofдля визначення додатка, пов’язаного з ним, наприклад:

lsof -i | grep 57857

дає

iTunes    36720   ...     TCP *:57857 (LISTEN)

коли у мене працює iTunes.


2

Хоча це класифікується як застаріла стаття, саме це ви можете шукати: 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. Переконайтесь, що прапорець "Всі вихідні".


Я досвідчений програміст, тому знаю свій шлях до Xcode (і це добре, тому що я не впевнений, що хотів би встановити Xcode саме для цього). Я перевірю це, дякую!
zneak

Apple видалила код, однак він доступний на дзеркалі .
Містер Тао

@ Mr.Tao Код все ще існує на сайті Apple. Я оновив посилання у відповіді
Jay O'Conor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.