How bonjour discover devices on network?

Sarfraz Ahmed picture Sarfraz Ahmed · Jan 25, 2012 · Viewed 7.1k times · Source

I want to write a C program that can search Bonjour enabled devices on network.

Basically we have a Network IP Camera, it supports Bonjour protocol. I want to write API in C that can search these devices which have Bonjour enabled. Does anyone have sample code or suggestions on how should I do that?

Answer

Totoro picture Totoro · Jan 25, 2012

The following links provide some code samples, as you requested:

mDNSResponder

Quotes from mDNSPosix/ReadMe.txt:

mDNSPosix is a port of Apple's Multicast DNS and DNS Service Discovery code to Posix platforms.

Multicast DNS and DNS Service Discovery are technologies that allow you to register IP-based services and browse the network for those services.

Packing List:

The sample uses the following directories:

o mDNSCore -- A directory containing the core mDNS code. This code
is written in pure ANSI C and has proved to be very portable. Every platform needs this core protocol engine code.

o mDNSShared -- A directory containing useful code that's not core to the main protocol engine itself, but nonetheless useful, and used by
more than one (but not necessarily all) platforms.

o mDNSPosix -- The files that are specific to Posix platforms: Linux, Solaris, FreeBSD, NetBSD, OpenBSD, etc. This code will also work on
OS X, though that's not its primary purpose.

o Clients -- Example client code showing how to use the API to the
services provided by the daemon.

Using the Sample ---------------- When you compile, you will get:

o Main products for general-purpose use (e.g. on a desktop computer): - mdnsd - libmdns - nss_mdns (See nss_ReadMe.txt for important information about nss_mdns)

o Standalone products for dedicated devices (printer, network camera, etc.) - mDNSClientPosix - mDNSResponderPosix - mDNSProxyResponderPosix

o Testing and Debugging tools - dns-sd command-line tool (from the "Clients" folder) - mDNSNetMonitor - mDNSIdentify

SDWrap

ReadMe:

Quite simple wrapper app to execute some command with Zeroconf supplied addresses and ports. Uses wxWidgets and wxServDisc for service discovery...

Good luck!