В настоящее время я пишу приложение для Windows 10 для чтения пакетов UDP с помощью QUDPSocket через Ethe rnet, адаптированный для удара молнии.
WireShark и Microsoft UDP Receiver / Sender видят правильные пакеты UDP и где находятся IP-адрес каждого отправителя, номер порта, локальный адрес IP и номер локального порта.
Но всякий раз, когда я пытаюсь использовать QUDPSocket, возникают проблемы с получением каких-либо пакетов. ReadyRead () никогда не сигнализируется.
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
socket = new QUdpSocket(this);
connect(socket, SIGNAL(readyRead()), this, SLOT(processPendingDatagrams()), Qt::QueuedConnection);
socket->bind(QHostAddress::AnyIPv4, 56666);
}
void MainWindow::processPendingDatagrams()
{
QByteArray array;
QHostAddress sender;
quint16 senderPort;
while (socket->hasPendingDatagrams())
{
array.fill(0, socket->pendingDatagramSize());
socket->readDatagram(array.data(),
array.size(),
&sender,
&senderPort);
qDebug()<<socket->pendingDatagramSize();
}
}
Я пробовал несколько версий привязки, но ни одна не работала. Спасибо за любую помощь заранее.