Ответ 1
Вы пробовали инструмент командной строки dns-sd?
Если вы введете dns-sd -B _services._dns-sd._udp
, чтобы получить все доступные службы, вы увидите там доступную службу _whats-my-name
.
$ dns-sd -B _services._dns-sd._udp
Browsing for _services._dns-sd._udp
DATE: ---Tue 16 Dec 2014---
14:38:30.746 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
14:38:30.747 Add 3 5 . _tcp.local. _nfs
14:38:30.747 Add 3 5 . _tcp.local. _afpovertcp
14:38:30.747 Add 3 5 . _tcp.local. _smb
14:38:30.747 Add 2 0 . _tcp.local. _whats-my-name
14:38:31.330 Add 3 10 . _tcp.local. _nfs
14:38:31.330 Add 3 10 . _tcp.local. _afpovertcp
14:38:31.330 Add 2 10 . _tcp.local. _smb
после этого мы можем запросить эту услугу, которая выводит следующее:
$ dns-sd -B _whats-my-name._tcp
Browsing for _whats-my-name._tcp
DATE: ---Tue 16 Dec 2014---
14:40:20.738 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
14:40:20.742 Add 2 0 local. _whats-my-name._tcp. Blub MacBook Pro
Instance Name
- интересная часть. Я предполагаю, что услуга _whats-my-name
доступна на каждом компьютере, работающем bonjour. Возможно, вы можете отслеживать отправленные запросы и восстанавливать их с помощью основных инструментов bash, если вы не можете получить доступ к dns-sd в каждом случае. Более того, вы не должны использовать dns-sd в своем script. Вместо этого вы должны использовать определенную реализацию протокола для своего языка программирования.
Примечание. Помните, что имя устройства может быть ненадежным, чтобы определить, какое устройство вы общаетесь с
Надеюсь, что это поможет.