Tôi có thể liệt kê tất cả các dịch vụ hỗ trợ Bonjour đang chạy không?


21

Tôi sẽ quan tâm đến việc biết chương trình nào tự quảng cáo bằng Bonjour trên máy của tôi. Có cách nào làm được việc này không?

Câu trả lời:


36

Công dns-sdcụ dòng lệnh có thể hữu ích cho việc này, nhưng học cách sử dụng nó hơi khó.

Chạy dns-sd -B _services._dns-sd._udpsẽ trả về một danh sách tất cả các loại dịch vụ hiện có đang được quảng cáo. (Danh sách trên mỗi giao diện, do đó sẽ có một số dự phòng.) Nếu việc này được thực hiện trên máy Mac không có kết nối mạng hoạt động, danh sách tất nhiên sẽ chỉ chứa các dịch vụ chạy trên máy đó.

Sử dụng danh sách đó, bạn có thể yêu cầu thông tin về các loại dịch vụ riêng lẻ bằng cách chạy những thứ như dns-sd -B _home-sharing._tcp(liệt kê các phiên bản iTunes Home Sharing), sau đó, với một tên ví dụ, bạn có thể chạy dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcpđể tra cứu thông tin cho một trường hợp cụ thể.

Thành thật mà nói, toàn bộ quá trình này khá tẻ nhạt và đó chính xác là những gì Discovery (trước đây là Bonjour Browser) được xây dựng để làm, vì vậy tôi rất khuyến khích sử dụng nó. Dù bạn làm theo cách nào đi chăng nữa, có thể không phải lúc nào cũng rõ ràng chương trình nào chịu trách nhiệm cho một mục dịch vụ nhất định.

Bạn có thể sử dụng chiến lược được đưa ra trong câu trả lời của binarybob để cố gắng ánh xạ các mục dịch vụ sang các quy trình đang chạy dựa trên số cổng, nhưng điều này có thể không luôn luôn hoạt động. Một chiến lược khác là chạy một cái gì dns-sd -B _home-sharing._tcpđó vẫn mở và báo cáo khi các trường hợp được thêm hoặc xóa, sau đó, từng cái một, thoát khỏi các ứng dụng khác nhau và (giả sử đó không phải là một dịch vụ hệ thống) xem ai thoát khỏi việc kích hoạt thông báo xóa.


Có vẻ như dịch vụ chia sẻ âm nhạc bây giờ được gọi là _daapmặc dù.
zneak

Trên thực tế, DAAP đề cập đến hai hình thức chia sẻ thư viện riêng biệt của iTunes. DAAP được bật thông qua Tùy chọn> Chia sẻ> Chia sẻ thư viện của tôi trên mạng cục bộ của tôi. Chia sẻ tại nhà, được thêm vào iTunes 9, được bật thông qua Tệp> Chia sẻ tại nhà. Nó sử dụng ID Apple của bạn để xác thực.
Wes Stratege

5

Mặc dù nó có thể không đáp ứng các tiêu chí chính xác của bạn, Trình duyệt Bonjour của Tildesoft có thể liệt kê tất cả các dịch vụ bonjour được quảng cáo trên mạng địa phương của bạn và các máy chủ đang quảng cáo chúng.

Tôi đoán đối với các dịch vụ được quảng cáo tại địa phương, bạn có thể xem chi tiết trong Bonjour Browser để tìm số cổng dịch vụ được quảng cáo, sau đó sử dụng lsofđể xác định ứng dụng được liên kết với nó, Ví dụ:

lsof -i | grep 57857

cho

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

khi tôi có iTunes đang chạy.


2

Mặc dù được phân loại là một bài viết cũ, nhưng đây rất có thể là những gì bạn đang tìm kiếm: DNSServiceMetaQuery. Theo phác thảo của tài liệu:

Mẫu này sử dụng DNSServiceQueryRecord để gửi truy vấn DNS Multicast trả về danh sách các loại dịch vụ Bonjour đang được quảng cáo trên mạng cục bộ. Các máy phải chạy mDNSResponder-58.6 (Mac OS X 10.3.4) trở lên để đáp ứng truy vấn này.

Để chạy DNSServiceMetaQuery trên Mountain Lion (bản dựng được bao gồm không chạy đúng cách), hãy truy cập liên kết mã mẫu và nhấp vào Tải xuống Mã mẫu. Sau đó, cài đặt Xcode nếu bạn chưa có. Tạo một dự án mới theo mẫu của Mac OS X> Ứng dụng> Công cụ dòng lệnh .

Mở và sao chép tất cả văn bản vào ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.cvà dán nó vào main.cdự án Công cụ dòng lệnh mới của bạn (thay thế mọi thứ có trong mẫu). Tiếp theo, bạn sẽ cần thêm CoreFoundation.framework vào dự án bằng cách nhấp vào tên dự án trong thanh bên> Xây dựng giai đoạn và mở mũi tên thả xuống bên cạnh Liên kết nhị phân với thư viện. Nhấp vào +nút, tìm kiếm CoreFoundation.framework và thêm nó. Sau đó nhấp vào nút Run (trông giống như nút phát) và đợi hình ảnh Build Succeeded. Một cái gì đó nên đến từ nút của cửa sổ với một bản ghi; điều này sẽ hiển thị tất cả các dịch vụ Bonjour của bạn. Hãy chắc chắn rằng tất cả đầu ra được kiểm tra.


Tôi là một lập trình viên thành thạo, vì vậy tôi biết cách của mình xung quanh Xcode (và đó là một điều tốt vì tôi không chắc chắn tôi muốn cài đặt Xcode chỉ cho điều đó). Tôi sẽ kiểm tra xem, cảm ơn!
zneak

Apple đã loại bỏ mã, tuy nhiên, nó có sẵn trên gương .
Ông Tao

@ Mr.Tao Mã vẫn tồn tại trên trang web của Apple. Tôi đã cập nhật liên kết trong câu trả lời
Jay O'Conor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.