Antworten:
Das dns-sd
Kommandozeilen-Tool kann dabei hilfreich sein, aber es ist etwas schwierig zu lernen, es zu benutzen.
Beim Ausführen dns-sd -B _services._dns-sd._udp
wird eine Liste aller verfügbaren Diensttypen zurückgegeben, die derzeit angekündigt werden. (Die Liste bezieht sich auf die Benutzeroberfläche, sodass Redundanz besteht.) Wenn dies auf einem Mac ohne aktive Netzwerkverbindung erfolgt, enthält die Liste natürlich nur Dienste, die auf diesem Computer ausgeführt werden.
Mithilfe dieser Liste können Sie Informationen zu den einzelnen Diensttypen anfordern, indem dns-sd -B _home-sharing._tcp
Sie Folgendes ausführen (das iTunes Home Sharing-Instanzen auflistet). Unter Angabe eines Instanznamens können Sie dann dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcp
nach Informationen für eine bestimmte Instanz suchen.
Um ehrlich zu sein, ist dieser gesamte Prozess ziemlich langwierig und genau dafür wurde Discovery (ehemals Bonjour Browser) entwickelt. Daher kann ich die Verwendung dieses Verfahrens nur empfehlen. Unabhängig davon, wie Sie vorgehen, ist möglicherweise nicht immer klar, welches Programm für einen bestimmten Serviceeintrag verantwortlich ist.
Sie können die in der Antwort von binarybob angegebene Strategie verwenden , um Diensteinträge auf der Grundlage der Portnummer laufenden Prozessen zuzuordnen. Dies funktioniert jedoch möglicherweise nicht immer. Eine andere Strategie besteht darin, etwas auszuführen, dns-sd -B _home-sharing._tcp
das offen bleibt und meldet, wenn Instanzen hinzugefügt oder entfernt werden, und dann nacheinander verschiedene Apps zu beenden und (vorausgesetzt, es handelt sich nicht um einen Systemdienst) zu sehen, durch welches Beenden die Entfernungsmeldung ausgelöst wird.
Obwohl der Bonjour-Browser von Tildesoft möglicherweise nicht Ihren genauen Kriterien entspricht, kann er alle Bonjour- Dienste auflisten, die in Ihrem lokalen Netzwerk beworben werden, und die Hosts, die sie bewerben.
Ich vermute, dass Sie für lokal angekündigte Dienste in Bonjour Browser einen Drilldown durchführen können, um die Portnummer lsof
zu ermitteln, auf der der Dienst angekündigt ist, und dann die damit verbundene Anwendung zu bestimmen. Beispiel:
lsof -i | grep 57857
gibt
iTunes 36720 ... TCP *:57857 (LISTEN)
wenn ich iTunes laufen habe.
Obwohl als Legacy-Artikel klassifiziert, könnte dies genau das sein, wonach Sie suchen: DNSServiceMetaQuery. Wie in der Dokumentation beschrieben:
In diesem Beispiel wird DNSServiceQueryRecord zum Senden einer Multicast-DNS-Abfrage verwendet, die eine Liste der Bonjour-Diensttypen zurückgibt, die im lokalen Netzwerk angekündigt werden. Auf Computern muss mDNSResponder-58.6 (Mac OS X 10.3.4) oder höher ausgeführt werden, um auf diese Abfrage zu antworten.
Um DNSServiceMetaQuery auf Mountain Lion auszuführen (der enthaltene Build wird nicht ordnungsgemäß ausgeführt), wechseln Sie zum Beispielcode-Link und klicken Sie auf Beispielcode herunterladen. Installieren Sie dann Xcode, falls Sie dies noch nicht getan haben. Erstellen Sie ein neues Projekt unter der Vorlage von Mac OS X> Anwendung> Befehlszeilentool .
Öffnen und kopieren Sie den gesamten Text ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.c
und fügen Sie ihn in main.c
Ihr neues Command Line Tool-Projekt ein (ersetzen Sie alles, was in der Vorlage vorhanden war). Als Nächstes müssen Sie CoreFoundation.framework zum Projekt hinzufügen, indem Sie in der Seitenleiste auf den Projektnamen klicken> Phasen erstellen und den Dropdown-Pfeil neben Binär mit Bibliotheken verknüpfen öffnen . Klicken Sie auf die +Schaltfläche, suchen Sie nach CoreFoundation.framework und fügen Sie es hinzu. Klicken Sie dann auf die Schaltfläche Ausführen (sieht aus wie eine Wiedergabetaste) und warten Sie auf ein erfolgreich erstelltes Image. Etwas sollte von der Schaltfläche des Fensters mit einem Protokoll kommen; Dadurch werden alle Ihre Bonjour-Dienste angezeigt. Stellen Sie sicher, dass Alle Ausgaben aktiviert ist.
_daap
.