Hey,
ich habe mir eine GUI in QT geschrieben die über alle
Netzwerkschnittstellen Broadcast Pakete verschickt.
1 | QString discoveryMessage = "1234567890";
|
2 | QByteArray Data = QByteArray::fromHex(discoveryMessage.toLatin1());
|
3 |
|
4 | discoveryUdpSocket = new QUdpSocket(this);
|
5 | discoveryUdpSocket->bind(QHostAddress::Any, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
|
6 | connect(discoveryUdpSocket, SIGNAL(readyRead()), this, SLOT(read_discover_datagram()));
|
7 |
|
8 | /* Update Network Adresses */
|
9 | foreach (QNetworkInterface interface, QNetworkInterface::allInterfaces()) {
|
10 | foreach( QNetworkAddressEntry entry, interface.addressEntries() ) {
|
11 | QHostAddress broadcastAddress = entry.broadcast();
|
12 | if (broadcastAddress != QHostAddress::Null && entry.ip() != QHostAddress::LocalHost)
|
13 | {
|
14 | discoveryUdpSocket->writeDatagram(Data, broadcastAddress, 4321 );
|
15 | }
|
16 | }
|
17 | }
|
1 | void TestClass::read_discover_datagram()
|
2 | {
|
3 | while (discoveryUdpSocket->hasPendingDatagrams()) {
|
4 | QHostAddress sender;
|
5 | quint16 senderPort;
|
6 | QByteArray buffer;
|
7 |
|
8 | buffer.resize(discoveryUdpSocket->pendingDatagramSize());
|
9 | discoveryUdpSocket->readDatagram(buffer.data(), buffer.size(), &sender, &senderPort);
|
10 | ...
|
wie kann ich am einfachsten in read_discover_datagram() herausfinden von
welchen Interfaces die Antwort zurückkam?