diff options
author | Johann Latocha | 2010-08-26 22:18:48 +0200 |
---|---|---|
committer | Johann Latocha | 2010-08-26 22:18:48 +0200 |
commit | 6fa60949c1dcf8af134988219f7947d73f3b3464 (patch) | |
tree | 151b5d74de0687a3052b6b96f43b4cdacbbc449d /src/net | |
parent | Anpassungen fuer Win32-build. (diff) | |
download | pvs-6fa60949c1dcf8af134988219f7947d73f3b3464.tar.gz pvs-6fa60949c1dcf8af134988219f7947d73f3b3464.tar.xz pvs-6fa60949c1dcf8af134988219f7947d73f3b3464.zip |
Defect #746
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/pvsServiceBroadcast.cpp | 19 | ||||
-rw-r--r-- | src/net/pvsServiceBroadcast.h | 2 |
2 files changed, 18 insertions, 3 deletions
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 <cassert>
#include "src/util/serviceDiscoveryUtil.h"
+#include <QNetworkInterface>
+#include <QNetworkAddressEntry>
+
PVSServiceBroadcast::PVSServiceBroadcast()
{
_announce = NULL;
_timer = 0;
_broadcaster.bind(SD_PORT_CONSOLE);
- _everyone = QHostAddress(QHostAddress::Broadcast);
+
+ QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces ();
+ foreach (QNetworkInterface interface, interfaces)
+ {
+ QList<QNetworkAddressEntry> 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);
}
diff --git a/src/net/pvsServiceBroadcast.h b/src/net/pvsServiceBroadcast.h index cf3f63d..a23370f 100644 --- a/src/net/pvsServiceBroadcast.h +++ b/src/net/pvsServiceBroadcast.h @@ -39,7 +39,7 @@ protected: private:
QByteArray *_announce;
QUdpSocket _broadcaster;
- QHostAddress _everyone;
+ QList<QHostAddress> _everyone;
int _timer;
};
|