Réponses:
L' dns-sd
outil de ligne de commande peut être utile pour cela, mais apprendre à l'utiliser est un peu délicat.
L'exécution dns-sd -B _services._dns-sd._udp
renvoie une liste de tous les types de services disponibles actuellement annoncés. (La liste est par interface, il y aura donc une certaine redondance.) Si cela se fait sur un Mac sans connexion réseau active, la liste ne contiendra bien sûr que les services exécutés sur cette machine.
À l'aide de cette liste, vous pouvez demander des informations sur les types de services individuels en exécutant des choses comme dns-sd -B _home-sharing._tcp
(qui répertorie les instances de partage à domicile iTunes), puis, en fonction d'un nom d'instance, vous pouvez exécuter dns-sd -L "Wes Campaigne’s Library" _home-sharing._tcp
pour rechercher des informations pour une instance particulière.
Pour être honnête, cependant, tout ce processus est plutôt fastidieux, et c'est exactement ce que Discovery (anciennement Bonjour Browser) a été conçu pour faire, donc je recommande fortement de l'utiliser. Quelle que soit la façon dont vous le faites, cependant, il peut ne pas toujours être clair quel programme est responsable d'une entrée de service donnée.
Vous pouvez utiliser la stratégie donnée dans la réponse de binarybob pour essayer de mapper les entrées de service aux processus en cours en fonction du numéro de port, mais cela peut ne pas toujours fonctionner. Une autre stratégie consiste à exécuter quelque chose comme dns-sd -B _home-sharing._tcp
qui reste ouvert et signale lorsque des instances sont ajoutées ou supprimées, puis, une par une, quittez diverses applications et (en supposant qu'il ne s'agit pas d'un service système), voyez laquelle quitter déclenche le message de suppression.
Bien qu'il puisse ne pas répondre à vos critères exacts, le navigateur Bonjour de Tildesoft peut répertorier tous les services bonjour annoncés sur votre réseau local et les hôtes qui les annoncent.
Je suppose que pour les services publiés localement, vous pouvez explorer le navigateur Bonjour pour trouver le numéro de port sur lequel le service est annoncé, puis l'utiliser lsof
pour déterminer l'application qui lui est associée, par exemple:
lsof -i | grep 57857
donne
iTunes 36720 ... TCP *:57857 (LISTEN)
lorsque j'exécute iTunes.
Bien que classé comme un article hérité, cela pourrait très bien être ce que vous recherchez: DNSServiceMetaQuery. Comme indiqué dans la documentation:
Cet exemple utilise DNSServiceQueryRecord pour envoyer une requête DNS multidiffusion qui renvoie une liste des types de service Bonjour annoncés sur le réseau local. Les machines doivent exécuter mDNSResponder-58.6 (Mac OS X 10.3.4) ou une version ultérieure pour répondre à cette requête.
Pour exécuter DNSServiceMetaQuery sur Mountain Lion (la version incluse ne fonctionne pas correctement), accédez au lien d'exemple de code et cliquez sur Télécharger l'exemple de code. Ensuite, installez Xcode si vous ne l'avez pas déjà fait. Créez un nouveau projet sous le modèle de Mac OS X> Application> Outil de ligne de commande .
Ouvrez et copiez tout le texte dans ~/Downloads/DNSServiceMetaQuery/DNSServiceMetaQuery.c
et collez-le dans main.c
votre nouveau projet d'outil de ligne de commande (en remplaçant tout ce qui était là dans le modèle). Ensuite, vous devrez ajouter CoreFoundation.framework au projet en cliquant sur le nom du projet dans la barre latérale> Phases de construction et ouvrez la flèche déroulante à côté de Lier le binaire aux bibliothèques. Cliquez sur le +bouton, recherchez CoreFoundation.framework et ajoutez-le. Cliquez ensuite sur le bouton Exécuter (ressemble à un bouton de lecture) et attendez une image Build Succeeded. Quelque chose devrait provenir du bouton de la fenêtre avec un journal; cela affichera tous vos services Bonjour. Assurez-vous que Toutes les sorties est coché.
_daap
.