/ / Qt sprawdź, czy podana nazwa hosta wskazuje na localhost [duplikat] - qt, localhost, nazwa hosta, interfejs sieciowy

Qt określa, czy podana nazwa hosta wskazuje na localhost [duplicate] - qt, localhost, hostname, network-interface

Moja aplikacja łączy się z serwerem TCP. Chciałbym wiedzieć, że działa na tym samym hoście, co aplikacja serwera, więc może w końcu bezpośrednio uruchomić proces serwera, jeśli nie działa.

Gdy serwer nasłuchuje na interfejsie iaplikacja rozpoznaje nazwę hosta w celu połączenia z serwerem, nie jest dla mnie oczywiste ustalenie, czy skonfigurowana nazwa hosta używana do połączenia serwera wskazuje na ten sam host, co serwer.

Chciałbym coś takiego:

bool isThisLocalHost(QString hostName) {
//resolve hostname"s address
//list localhost interfaces ip or hw addresses ?
//if the hostname address matches one of the host interfaces address
//pseudo code
bool bRes = interfaces_addresses_list.contains(hostname_address);

return bRes;
}

Właściwie to staram się to osiągnąć QNetworkInterface, QNetworkAddressEntry, QHostInfo, QHostAddress.

Może jest jakiś prosty sposób?

Odpowiedzi:

0 dla odpowiedzi № 1

QHostAddress ma isLoopback () co powinno zapewnić ci to, czego potrzebujesz.

Jeśli chcesz tylko wiedzieć, czy jesteś podłączony do siebie, jest to (częściowo?) Duplikat to pytanie.


0 dla odpowiedzi nr 2

Oto, co mam:

bool isThisLocalHost(QString hostName) {
QList <QHostAddress> lAddrHostName = QHostInfo::fromName(hostName).addresses();
QList <QHostAddress> lAddrLocalHostInterfaces = QNetworkInterface::allAddresses();
bool bRes = false;
foreach (QHostAddress addr, lAddrHostName) {
bRes = bRes || lAddrLocalHostInterfaces.contains(addr);
}
return bRes;
}