udp 绑定/连接但未收到数据报

问题描述

我是 Qt、c++ 的新手,最近我尝试使用 UDP 从另一个 raspBerrypi2(多播)接收我的 raspBerrypi1 上的数据。我能够绑定它们,但我无法接收数据(nopendingdatagram)。我想知道我在这里做错了什么。 (您可能已经注意到,下面的代码取自在线示例)。预先感谢您帮助我。

// myudp.h

#ifndef MYUDP_H
#define MYUDP_H

#include <QObject>
#include <QUdpSocket>

class MyUDP : public QObject
{
   Q_OBJECT
public:
   explicit MyUDP(QObject *parent = 0);
   //void HelloUDP();
signals:

public slots:
   void readyRead();

private:
   QUdpSocket *socket;

};

#endif // MYUDP_H
// myudp.cpp

#include "myudp.h"

MyUDP::MyUDP(QObject *parent) :
    QObject(parent)
{
    // create a QUDP socket
    socket = new QUdpSocket(this);

    bool result = socket->bind(QHostAddress("224.224.0.2"),10002);
    
    if(result)
    {
        qDebug() << "Socket Connected";
    }
                    
    else
    {
        qDebug() << "Socket Not Connected";           
    }
                    
    connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()));
}

void MyUDP::readyRead()
{
    // when data comes in
    bool data_pending = socket->hasPendingDatagrams();
    qDebug() << data_pending;
    
    if(data_pending)
    {
        QByteArray buffer;
        buffer.resize(socket->pendingDatagramSize());
    
        QHostAddress sender;
        quint16 senderPort;
    
        socket->readDatagram(buffer.data(),buffer.size(),&sender,&senderPort);
    
        qDebug() << "Message from: " << sender.toString();
        qDebug() << "Message port: " << senderPort;
        qDebug() << "Message: " << buffer;
    }
    
    else 
    {
        qDebug() << "No data";
    }
    
}
#include <QCoreApplication>
#include "myudp.h"

int main(int argc,char *argv[])
{
    QCoreApplication a(argc,argv);

    MyUDP client;

    client.readyRead();

    return a.exec();
}

结果如下:

Socket Connected
false
No data

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)