微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。