原因是没有读取上一次的数据,socket就不会发送下一个到来的包的数据接收信号。
测试代码
QObject::connect(udpserver, &QUdpSocket::readyRead, this, &widget::testSlot, Qt::QueuedConnection);
void widget::testSlot() { qDebug()<<"testSlot"; QByteArray a; a.resize(udpserver->pendingDatagramSize()); //udpserver->readDatagram(a.data(), a.size()); //注释掉就只能接收一次 qDebug()<<a.size(); }