效果如图:
主要功能:
1.查询本机信息
void networkTool::findHost()
{
QString hostName = QHostInfo::localHostName();
QHostInfo hostInfor = QHostInfo::fromName(hostName);
QList<QHostAddress>hostAddresss = hostInfor.addresses();
bool ip = ui->cb_ip->isChecked();
bool port = ui->cb_port->isChecked();
if (ip&&port)
{
QList<QHostAddress> ipAddress = QNetworkInterface::allAddresses();
std::for_each(ipAddress.begin(), ipAddress.end(), [=](QHostAddress pos) {
appendInformation(pos);
});
QList<QNetworkInterface> portAddress = QNetworkInterface::allInterfaces();
std::for_each(portAddress.begin(), portAddress.end(), [=](QNetworkInterface pos) {
traverse(pos);
});
}
else if(ip&&!port)
{
QList<QHostAddress> ipAddress = QNetworkInterface::allAddresses();
std::for_each(ipAddress.begin(), ipAddress.end(), [=](QHostAddress pos) {
appendInformation(pos);
});
}
else if (!ip&&port)
{
QList<QNetworkInterface> portAddress = QNetworkInterface::allInterfaces();
std::for_each(portAddress.begin(), portAddress.end(), [=](QNetworkInterface pos) {
traverse(pos);
});
}
else
{
ui->te_information->append("主机名:" + hostName);
std::for_each(hostAddresss.begin(), hostAddresss.end(), [=](QHostAddress pos) {
appendInformation(pos);
});
}
}
遍历所用到的函数:
void networkTool::appendInformation(QHostAddress pos)
{
if(pos.protocol()== QAbstractSocket::IPv4Protocol)
{
ui->te_information->append("IPv4:" + pos.toString());
}
else if (pos.protocol() == QAbstractSocket::IPv6Protocol)
{
ui->te_information->append("IPv6:" + pos.toString());
}
else
{
ui->te_information->append("本机IP(其他类型):" + pos.toString());
}
}
2.查询域名
void networkTool::findIp()
{
if (ui->le_findConditon->text().isEmpty())return;
QString domainName = ui->le_findConditon->text();
ui->te_information->append("查询域名为:" + domainName);
QHostInfo::lookupHost(domainName, this, SLOT(on_find(const QHostInfo & )));
}
void networkTool::on_find(const QHostInfo& hostInfo)
{
QList<QHostAddress> address = hostInfo.addresses();
std::for_each(address.begin(), address.end(), [=](QHostAddress pos) {
appendInformation(pos);
});
}
lookupHost为静态函数,三个参数分别为:主机名、所在类、成功后执行的槽函数
QHostInfo::lookupHost(domainName, this, SLOT(on_find(const QHostInfo & )));
以上就是程序的主要代码,如有什么问题请评论留言。
如需源码参考请转至资源下载中心