void SearchDialog::setRemainTime(int time)
{
remainTime = time;
searchResult = 0;
QString strText = tr("Found %1 NPort(s) ,remain timeout = %2 second(s) ").arg(searchResult).arg(remainTime);
ui->findLabel->setText(strText);
_timer.start(1000);
QByteArray byteArr = QByteArray("\x01\x00\x00\x08\x00\x00\x00\x00",8);
QHash<QString, QUdpSocket*>::const_iterator i;
for(i=mUdpClients.constBegin();i!=mUdpClients.constEnd();i++){
QUdpSocket *client = i.value();
QString broadIp = i.key();
client->writeDatagram(byteArr, QHostAddress(broadIp),4800);
}
}
void SearchDialog::initSocket()
{
QList<QNetworkInterface> ifaceList = QNetworkInterface::allInterfaces();
//获取系统里所有的网络接口
foreach(QNetworkInterface intf, ifaceList){ //遍历所有接口
foreach(QNetworkAddressEntry entry, intf.addressEntries()){
//intf.addressEntries()返回此接口拥有的IP地址列表及其相关的网掩码和广播地址。
if(entry.ip().isLoopback() == true){
continue;
}
else{
if(entry.ip().protocol() !=QAbstractSocket::IPv4Protocol)
continue;
else{
QString name = intf.humanReadableName();
QString strIp = entry.ip().toString();
hash.insert(name, strIp);
udpClient = new QUdpSocket(this);
QHostAddress networkcardip(strIp);
udpClient->bind(networkcardip, 4800,QAbstractSocket::DontShareAddress);
connect(udpClient,SIGNAL(readyRead()),
this,SLOT(readPendingDatagrams()));
mUdpClients.insert(entry.broadcast().toString(),udpClient);
}
}
}
}
}
qt如何在每个网口广播发送信息并且接收信息
最新推荐文章于 2023-01-14 15:44:59 发布