В моем приложении я хочу получить имя хоста & MAC-адрес с IP-адреса (в моей локальной сети).
Я использовал этот код, чтобы найти имя хоста, но ничего не появилось в lineedit.
QHostInfo HI;
QHostAddress HA("192.168.1.1");
QList<QHostAddress> List;
List.append(HA);
HI.setAddresses(List);
ui->ledHostname->setText(HI.hostName());
Чтобы получить имя хоста с IP-адреса, вы можете вызвать lookupHost (), который принимает имя хоста или IP-адрес, объект получателя и подпись слота в качестве аргументов. Слот вызывается, когда результаты готовы. Результаты хранятся в объекте QHostInfo. Вызовите address (), чтобы получить список 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();
}
Для получения MAC-адреса удаленного IP-адреса вы должны использовать системные команды и код платформы. В Qt нет способа сделать это. Например, в Windows это можно сделать:
arp -a <IP>
Я использовал этот код:
QHostInfo HI = QHostInfo::fromName("192.168.1.50");
ui->ledHostname->setText(HI.hostName());
Работал для некоторых IP-адресов & показывает имя хоста! Для других IP-адресов снова отображается IP-адрес.
Для моей проблемы MAC я использую пакет ARP.