Qt — Получить имя хоста & amp; MAC-адрес от IP-адреса

В моем приложении я хочу получить имя хоста & 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());

1

Решение

Чтобы получить имя хоста с 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>
2

Другие решения

Я использовал этот код:

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

Работал для некоторых IP-адресов & показывает имя хоста! Для других IP-адресов снова отображается IP-адрес.

Для моей проблемы MAC я использую пакет ARP.

0

По вопросам рекламы [email protected]