我正在尝试接收发送到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()));
}
}