/aware

Device discovery

Primary LanguageC++Boost Software License 1.0BSL-1.0

aware

Device discovery with Boost.Asio.

Notice that this project is continued in trial.aware.

Introduction

The aware module discovers devices using ZeroConf.

An example of the use of aware:

#include <iostream>
#include <boost/bind.hpp>
#include <boost/ref.hpp>
#include <boost/asio/io_service.hpp>
#include <aware/contact.hpp>
#include <aware/avahi/monitor_socket.hpp>

void AwareHandler(const boost::system::error_code& error,
                  aware::contact& contact,
                  aware::monitor_socket& socket)
{
    // The device described by contact has joined or left the network
    std::cout << contact.type() << " = " << contact.endpoint() << std::endl;
    // Listen for next event
    socket.async_listen(contact,
                        boost::bind(AwareHandler,
                                    _1,
                                    boost::ref(contact),
                                    boost::ref(socket)));
}

int main()
{
    boost::asio::io_service io;
    aware::avahi::monitor_socket socket(io);
    // Listen for "_announce._tcp" announcements
    aware::contact contact = aware::contact().type("announce");
    socket.async_listen(contact,
                        boost::bind(AwareHandler,
                                    _1,
                                    boost::ref(contact),
                                    boost::ref(socket)));
    io.run();
    return 0;
}

Building aware with Avahi backend

  1. Make sure CMake is installed.

  2. Make sure that the libavahi-client-dev package is installed.

  3. Checkout the repository.

  4. Build the example

    cmake .
    make
    
  5. Run the examples

    bin/avahi_monitor
    

    and from another shell:

    bin/avahi_announce