QT Receive Interface

Gast #6300994
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?
Gast #6301159
Hey Rolf,

danke, ich hatte das eben versucht. Erhalte aber vom Qt-Designer:

Semantic Issue
testapp.cpp:94:57: error: calling 'receiveDatagram' with incomplete 
return type 'QNetworkDatagram'
qudpsocket.h:77:22: note: 'receiveDatagram' declared here
qudpsocket.h:52:7: note: forward declaration of 'QNetworkDatagram'

Da "class QNetworkDatagram;" in qudpsocket.h forwärtsdeklariert wird.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.