Skip to content

Latest commit

 

History

History
78 lines (61 loc) · 1.94 KB

README.md

File metadata and controls

78 lines (61 loc) · 1.94 KB

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