使用Qt接收Udp数据包

时间:2018-07-19 06:17:28

标签: qt udp

我正在尝试接收发送到Braodcast的udp数据包。据wireshark说,它们是传入的,但我什么也没收到。起初,尽管防火墙阻止了我,但是即使防火墙关闭了,我也什么也没收到。我还需要说我是C ++的新手,所以在理解qt文档中示例的语法时遇到一些问题。我不明白为什么它不起作用,Possible duplikate的回答完全破坏了我的代码。

#include "receiver.h"

Receiver::Receiver(QWidget *parent)
    : QWidget(parent)
{
    udpSocket = new QUdpSocket(this);
    udpSocket->bind(12375, QUdpSocket::ShareAddress);

    connect(udpSocket, SIGNAL(readyRead()),
            this, SLOT(processPendingDatagrams()));

}

void Receiver::processPendingDatagrams()
{
    QByteArray datagram;
    while (udpSocket->hasPendingDatagrams())
    {
        datagram.resize(int(udpSocket->pendingDatagramSize()));
        udpSocket->readDatagram(datagram.data(), datagram.size());
        statusLabel->setText(tr("Received datagram: \"%1\"")
                             .arg(datagram.constData()));
    }
}

0 个答案:

没有答案