在我的应用程序中,我希望得到主机名&来自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());
答案 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数据包。