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()){
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);
}
}
}
}
}