Kann ich alle Bonjour-fähigen Dienste auflisten, die ausgeführt werden?

21

Mich würde interessieren, welche Programme sich mit Bonjour auf meinem Rechner bewerben. Gibt es eine Möglichkeit, das zu tun?

zneak
quelle

Antworten:

36

Das dns-sdKommandozeilen-Tool kann dabei hilfreich sein, aber es ist etwas schwierig zu lernen, es zu benutzen.

Beim Ausführen dns-sd -B _services._dns-sd._udpwird 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._tcpSie 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._tcpnach 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._tcpdas 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.

Wes Campaigne
quelle
Sieht so aus, als würde der Music-Sharing-Dienst jetzt aufgerufen _daap.
Zneak
Tatsächlich bezieht sich DAAP auf die ältere der beiden getrennten Formen der Bibliotheksfreigabe von iTunes. DAAP wird über Einstellungen> Freigabe> Meine Bibliothek in meinem lokalen Netzwerk freigeben aktiviert. Die in iTunes 9 hinzugefügte Privatfreigabe wird über "Datei"> "Privatfreigabe" aktiviert. Es verwendet Ihre Apple-ID zur Authentifizierung.
Wes Campaigne
5

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 lsofzu 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.

binarybob
quelle
2

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.cund fügen Sie ihn in main.cIhr 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.

Ethan Lee
quelle
Ich bin ein erfahrener Programmierer und kenne mich mit Xcode aus (und das ist auch gut so, weil ich nicht sicher bin, ob ich Xcode nur dafür installieren möchte). Ich werde es überprüfen, danke!
Zneak
Apple hat den Code entfernt, er ist jedoch auf einem Spiegel verfügbar .
Herr Tao
@ Mr.Tao Der Code ist noch auf der Apple-Website vorhanden. Ich habe den Link in der Antwort aktualisiert
Jay O'Conor