Bisakah saya mendaftar semua layanan yang mendukung Bonjour yang sedang berjalan?

21

Saya akan tertarik mengetahui program mana yang mengiklankan diri mereka menggunakan Bonjour di mesin saya. Apakah ada cara untuk melakukan itu?

zneak
sumber

Jawaban:

36

The dns-sdalat baris perintah dapat membantu untuk ini, tetapi belajar untuk menggunakannya adalah agak rumit.

Menjalankan dns-sd -B _services._dns-sd._udpakan 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._tcpuntuk 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._tcpyang 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.

Wes Campaigne
sumber
Sepertinya layanan berbagi musik sekarang disebut _daapsekalipun.
zneak
Sebenarnya, DAAP merujuk pada yang lebih tua dari dua bentuk berbagi perpustakaan iTunes yang terpisah. DAAP diaktifkan melalui Preferensi> Berbagi> Bagikan perpustakaan saya di jaringan lokal saya. Berbagi Rumah, ditambahkan di iTunes 9, diaktifkan melalui File> Berbagi Rumah. Ini menggunakan ID Apple Anda untuk otentikasi.
Wes Campaigne
5

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 lsofuntuk menentukan aplikasi yang terkait dengannya, Misalnya:

lsof -i | grep 57857

memberi

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

ketika saya menjalankan iTunes.

binarybob
sumber
2

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.cdan tempel ke dalam main.cproyek 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.

Ethan Lee
sumber
Saya seorang programmer yang mahir, jadi saya tahu jalan sekitar Xcode (dan itu hal yang baik karena saya tidak yakin saya ingin menginstal Xcode hanya untuk itu). Saya akan memeriksanya, terima kasih!
zneak
Apple telah menghapus kode tersebut, namun tersedia di cermin .
Tn. Tao
@ Mr.Tao Kode masih ada di situs Apple. Saya telah memperbarui tautan dalam jawabannya
Jay O'Conor