{
receiver = new QUdpSocket(this);
connect(receiver, &QUdpSocket::readyRead, this, &netSettingWin::processPendingDatagramSL);
QList<QNetworkInterface> interfaceList = QNetworkInterface::allInterfaces();
foreach(QNetworkInterface interface, interfaceList)
{
// qDebug() << interface.humanReadableName(); //打印網卡名稱
QList<QNetworkAddressEntry> entryList = interface.addressEntries();
foreach(QNetworkAddressEntry entry, entryList)
{
QString str = entry.broadcast().toString();
if (str != "")
{
QByteArray mas;
mas.append(char(0xff));
mas.append(char(0x01));
mas.append(char(0x01));
mas.append(char(0x02));
qDebug() << receiver->writeDatagram(mas, mas.size(), QHostAddress(str), 1901);
receiver->flush();
}
}
}
}
void netSettingWin::processPendingDatagramSL()
{
QByteArray mas;
while (receiver->hasPendingDatagrams())
{
QByteArray datagram;
// 讓datagram的大小爲等待處理的數據報的大小,這樣才能接收到完整的數據
datagram.resize(receiver->pendingDatagramSize());
// 接收數據報,將其存放到datagram中
receiver->readDatagram(datagram.data(), datagram.size());
mas = mas+datagram;
}
qDebug() << mas.size();
qDebug() << mas;
}