Как bonjour обнаруживает устройства в сети?

Я хочу написать программу на C, которая может искать в Bonjour устройства в сети.

В принципе у нас есть сетевая IP-камера, она поддерживает протокол Bonjour. Я хочу написать API в C, который может искать эти устройства с включенным Bonjour. Кто-нибудь имеет образец кода или предложения о том, как мне это сделать?

Ответ 1

Следующие ссылки предоставляют некоторые образцы кода, как вы просили:

mDNSResponder

Цитаты из mDNSPosix/ReadMe.txt:

mDNSPosix - это порт службы многоадресной рассылки DNS и DNS-службы Apple кода для платформ Posix.

Многоадресная передача DNS и DNS-услуг - это технологии, которые позволяют вы регистрируете службы на базе IP и просматриваете сеть для тех, кто услуги.

Упаковочный лист:

В примере используются следующие каталоги:

o mDNSCore - каталог, содержащий основной код mDNS. Этот код
написан в чистом ANSI C и оказался очень переносимым. каждый платформа нуждается в этом ключевом коде двигателя.

o mDNSShared - каталог, содержащий полезный код, который не является основным для сам основной протокол, но, тем не менее, полезный и используемый в более чем одной (но не обязательно всех) платформ.

o mDNSPosix - файлы, которые относятся к платформам Posix: Linux, Solaris, FreeBSD, NetBSD, OpenBSD и т.д. Этот код также будет работать на
OS X, хотя это и не основная цель.

o Клиенты - Пример кода клиента, показывающего, как использовать API для поиска услуги, предоставляемые демоном.

Использование образца ---------------- Когда вы компилируете, вы получите:

o Основные продукты для общего использования (например, на настольном компьютере):   - mdnsd   - libmdns   - nss_mdns (см. nss_ReadMe.txt для получения важной информации о nss_mdns)

o Автономные продукты для выделенных устройств (принтер, сетевая камера, и др.)  - mDNSClientPosix   - mDNSResponderPosix   - mDNSProxyResponderPosix

o Инструменты тестирования и отладки   - инструмент командной строки dns-sd (из папки "Клиенты" )   - mDNSNetMonitor   - mDNSIdentify

SDWrap

ReadMe:

Довольно простое приложение-оболочка для выполнения некоторой команды с Zeroconf поставляемые адреса и порты. Использует wxWidgets и wxServDisc для открытие службы...

Удачи!