X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=remote%2Fsource%2Fdiscovery.cpp;fp=remote%2Fsource%2Fdiscovery.cpp;h=b4f0662c6d5e93c0efdd3a57b8aee835b157682a;hb=1abfbdd94fa45883f6d742df00508715f79c9954;hp=0000000000000000000000000000000000000000;hpb=5a79899d5a888e9aa76f29cb889e77979062a4a1;p=xinema.git diff --git a/remote/source/discovery.cpp b/remote/source/discovery.cpp new file mode 100644 index 0000000..b4f0662 --- /dev/null +++ b/remote/source/discovery.cpp @@ -0,0 +1,37 @@ +#include "discovery.h" + +Discovery::Discovery(): + broadcast_addr("ff02::1"), + port(34588) +{ + socket.bind(QHostAddress::AnyIPv6); + connect(&socket, &QIODevice::readyRead, this, &Discovery::datagram_available); + + connect(&timer, &QTimer::timeout, this, &Discovery::send_beacon); + timer.setInterval(5000); +} + +void Discovery::start() +{ + timer.start(); + send_beacon(); +} + +void Discovery::stop() +{ + timer.stop(); +} + +void Discovery::send_beacon() +{ + socket.writeDatagram("xinema", 6, broadcast_addr, port); +} + +void Discovery::datagram_available() +{ + char rbuf[1024]; + QHostAddress peer_addr; + socket.readDatagram(rbuf, sizeof(rbuf), &peer_addr, 0); + + emit server_discovered(peer_addr); +}