Câu trả lời:
Công dns-sd
cụ 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._udp
sẽ 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.
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.
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.c
và dán nó vào main.c
dự á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.
_daap
mặc dù.