Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
udp绑定/连接,但未接收到数据报 我是QT,C++的新手,最近我尝试使用UDP来接收来自另一个RasBuryRyPi2(多播)的RASBRYRYPI1数据。我可以绑定它们,但是我不能接收数据(nopendingdatagram)。我不知道我在这里做错了什_Qt_Udpclient - Fatal编程技术网

udp绑定/连接,但未接收到数据报 我是QT,C++的新手,最近我尝试使用UDP来接收来自另一个RasBuryRyPi2(多播)的RASBRYRYPI1数据。我可以绑定它们,但是我不能接收数据(nopendingdatagram)。我不知道我在这里做错了什

udp绑定/连接,但未接收到数据报 我是QT,C++的新手,最近我尝试使用UDP来接收来自另一个RasBuryRyPi2(多播)的RASBRYRYPI1数据。我可以绑定它们,但是我不能接收数据(nopendingdatagram)。我不知道我在这里做错了什,qt,udpclient,Qt,Udpclient,udp绑定/连接,但未接收到数据报 我是QT,C++的新手,最近我尝试使用UDP来接收来自另一个RasBuryRyPi2(多播)的RASBRYRYPI1数据。我可以绑定它们,但是我不能接收数据(nopendingdatagram)。我不知道我在这里做错了什么。(正如您可能注意到的,下面的代码取自在线找到的示例)。非常感谢你帮助我 // myudp.h #ifndef MYUDP_H #define MYUDP_H #include <QObject> #include <Q

udp绑定/连接,但未接收到数据报 <>我是QT,C++的新手,最近我尝试使用UDP来接收来自另一个RasBuryRyPi2(多播)的RASBRYRYPI1数据。我可以绑定它们,但是我不能接收数据(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

您不能自己调用readyRead(),而是要等到数据到达。请参见此处的示例:感谢您的评论。我已经更改了line connect(socket…)和readyRead()函数以匹配示例。不过,它并没有向我展示我想要的输出。我同时运行wireshark,它正在接收数据报。因此,我试图将我在wireshark和Qt上看到的东西形象化。我找到了一个解决方案。显然,raspberry无法直接接收多播。因此,可以通过将网络tram上的多播地址引导到raspberry上的本地主机来解决该问题。
// 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