Jawaban:
The dns-sd
alat baris perintah dapat membantu untuk ini, tetapi belajar untuk menggunakannya adalah agak rumit.
Menjalankan dns-sd -B _services._dns-sd._udp
akan mengembalikan daftar semua jenis layanan yang tersedia yang saat ini sedang diiklankan. (Daftar ini per antarmuka, sehingga akan ada beberapa redundansi.) Jika ini dilakukan pada Mac tanpa koneksi jaringan aktif, daftar tentu saja hanya berisi layanan yang berjalan pada mesin itu.
Dengan menggunakan daftar itu, Anda dapat meminta informasi tentang jenis layanan individual dengan menjalankan hal-hal seperti dns-sd -B _home-sharing._tcp
(yang mencantumkan instance Berbagi Rumah iTunes), dan kemudian, dengan diberi nama instance, Anda dapat menjalankan dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcp
untuk mencari informasi untuk instance tertentu.
Sejujurnya, seluruh proses ini agak membosankan, dan itulah yang harus dilakukan oleh Discovery (sebelumnya Bonjour Browser), jadi saya sangat merekomendasikan untuk menggunakannya. Bagaimanapun cara Anda melakukannya, mungkin tidak selalu jelas program apa yang bertanggung jawab untuk entri layanan yang diberikan.
Anda dapat menggunakan strategi yang diberikan dalam jawaban binarybob untuk mencoba memetakan entri layanan untuk menjalankan proses berdasarkan nomor port, tetapi ini mungkin tidak selalu berhasil. Strategi lain adalah menjalankan sesuatu seperti dns-sd -B _home-sharing._tcp
yang tetap terbuka dan melaporkan ketika instance ditambahkan atau dihapus, lalu, satu per satu, keluar dari berbagai aplikasi dan (dengan asumsi itu bukan layanan sistem) melihat mana yang berhenti memicu pesan penghapusan.
Meskipun mungkin tidak memenuhi kriteria Anda yang sebenarnya, Bonjour Browser Tildesoft dapat mendaftar semua semua layanan bonjour yang diiklankan di jaringan lokal Anda dan host yang mengiklankannya.
Saya kira untuk layanan yang diiklankan secara lokal, Anda dapat menelusuri Bonjour Browser untuk menemukan nomor port layanan yang diiklankan, kemudian gunakan lsof
untuk menentukan aplikasi yang terkait dengannya, Misalnya:
lsof -i | grep 57857
memberi
iTunes 36720 ... TCP *:57857 (LISTEN)
ketika saya menjalankan iTunes.
Meskipun diklasifikasikan sebagai artikel lawas, mungkin ini yang Anda cari: DNSServiceMetaQuery. Seperti yang dijelaskan oleh dokumentasi:
Sampel ini menggunakan DNSServiceQueryRecord untuk mengirim permintaan DNS Multicast yang mengembalikan daftar jenis layanan Bonjour yang diiklankan di jaringan lokal. Mesin harus menjalankan mDNSResponder-58.6 (Mac OS X 10.3.4) atau lebih baru untuk menjawab pertanyaan ini.
Untuk menjalankan DNSServiceMetaQuery di Mountain Lion (build yang disertakan tidak berjalan dengan benar), buka tautan kode sampel dan klik Unduh Kode Sampel. Kemudian, instal Xcode jika Anda belum melakukannya. Buat proyek baru di bawah template Mac OS X> Aplikasi> Alat Baris Perintah .
Buka dan salin semua teks ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.c
dan tempel ke dalam main.c
proyek Alat Baris Perintah baru Anda (ganti semua yang ada di templat). Selanjutnya, Anda perlu menambahkan CoreFoundation.framework ke proyek dengan mengklik nama proyek di sidebar> Build Phases dan buka panah dropdown di sebelah Link Binary With Libraries. Klik +tombolnya, cari CoreFoundation.framework, dan tambahkan. Kemudian klik tombol Jalankan (terlihat seperti tombol putar) dan tunggu gambar Build Succeeded. Sesuatu harus datang dari tombol jendela dengan log; ini akan menampilkan semua layanan Bonjour Anda. Pastikan Semua Output dicentang.
_daap
sekalipun.