Qt - 获取主机名和;来自IP地址的MAC地址

时间:2014-03-29 05:59:43

标签: c++ qt ip mac-address hostname

在我的应用程序中,我希望得到主机名&来自IP地址的MAC地址(在我的LAN中)。 我使用此代码查找主机名,但没有出现在lineedit中。

QHostInfo HI;
QHostAddress HA("192.168.1.1");
QList<QHostAddress> List;
List.append(HA);
HI.setAddresses(List);
ui->ledHostname->setText(HI.hostName());

2 个答案:

答案 0 :(得分:2)

要从IP地址检索主机名,您可以调用lookupHost(),它将主机名或IP地址,接收方对象和插槽签名作为参数。结果准备好后调用插槽。结果存储在QHostInfo对象中。调用addresses()获取主机的IP地址列表,使用hostName()获取查找的主机名。

QHostInfo::lookupHost("92.168.1.1",
                   this, SLOT(lookedUp(QHostInfo)));

void MyWidget::lookedUp(const QHostInfo &host)
 {
     if (host.error() != QHostInfo::NoError) {
         qDebug() << "Lookup failed:" << host.errorString();
         return;
     }

     foreach (const QHostAddress &address, host.addresses())
         qDebug() << "Found address:" << address.toString();
 }

要获取远程IP的MAC地址,您应该使用系统命令和特定于平台的代码。在Qt中没有办法做到这一点。例如,在Windows上可以通过以下方式完成:

arp -a <IP>

答案 1 :(得分:0)

我使用了这段代码:

QHostInfo HI = QHostInfo::fromName("192.168.1.50");
ui->ledHostname->setText(HI.hostName());

为某些IP地址而工作显示主机名!对于其他IP地址,再次显示IP地址。

对于我的MAC问题,我使用的是ARP数据包。