From 6fa60949c1dcf8af134988219f7947d73f3b3464 Mon Sep 17 00:00:00 2001 From: Johann Latocha Date: Thu, 26 Aug 2010 22:18:48 +0200 Subject: Defect #746 --- src/net/pvsServiceBroadcast.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/net/pvsServiceBroadcast.cpp') diff --git a/src/net/pvsServiceBroadcast.cpp b/src/net/pvsServiceBroadcast.cpp index cf15b5b..f68db56 100644 --- a/src/net/pvsServiceBroadcast.cpp +++ b/src/net/pvsServiceBroadcast.cpp @@ -20,12 +20,26 @@ #include #include "src/util/serviceDiscoveryUtil.h" +#include +#include + PVSServiceBroadcast::PVSServiceBroadcast() { _announce = NULL; _timer = 0; _broadcaster.bind(SD_PORT_CONSOLE); - _everyone = QHostAddress(QHostAddress::Broadcast); + + QList interfaces = QNetworkInterface::allInterfaces (); + foreach (QNetworkInterface interface, interfaces) + { + QList entries = interface.addressEntries(); + foreach (QNetworkAddressEntry entry, entries) { + if (!entry.broadcast().isNull() && entry.broadcast().toString() != "127.255.255.255") + _everyone.append(entry.broadcast()); + } + } + if (_everyone.isEmpty()) + qDebug("ERROR: No broadcast address found"); } PVSServiceBroadcast::~PVSServiceBroadcast() @@ -47,5 +61,6 @@ void PVSServiceBroadcast::setFingerprint(QByteArray sha1) void PVSServiceBroadcast::timerEvent(QTimerEvent *event) { if (_announce == NULL) return; - _broadcaster.writeDatagram(*_announce, _everyone, SD_PORT_CLIENT); + foreach (QHostAddress bcast, _everyone) + _broadcaster.writeDatagram(*_announce, bcast, SD_PORT_CLIENT); } -- cgit v1.2.3-55-g7522