I am currently looking into a variety of service discovery protocols available to Java and have come up with a small list:
- DNS-SD[1] a.k.a mDNS - implemented by jmDNS and also used as a backend for Zeroconf/Bonjous discovery provider for ECF (Eclipse Communication Framework)
- UPnP[2] - implemented by Cling library
- SLP - implemented by OpenSLP and jSLP projects (later is also available as ECF Discovery provider)
There's probably more options, if so, I invite you to add tham to the mix.
I would love to get some objective listings of each protocol's pros and cons from people who have used one or many of these. How does implementation of publishing and discovering a service look like, what is the "chattiness" of the protocol, how reliable is it (both - the protocol and the implementations), does it require centralized service directory or is it p2p/decentralized etc.
Which one would you choose to provide seamless automatic discovery of multiple devices/services on the LAN?