/ / Qt bestimmt, ob der angegebene Hostname auf localhost [duplicate] verweist - qt, localhost, Hostname, Netzwerkschnittstelle

Qt bestimmen, ob der angegebene Hostname auf localhost [duplicate] verweist - qt, localhost, hostname, network-interface

Meine Anwendung stellt eine Verbindung zu einem TCP-Server her. Ich möchte, dass es sich bewusst ist, dass es auf demselben Host wie die Server-App ausgeführt wird, damit es den Serverprozess schließlich direkt starten kann, wenn er nicht aktiv ist.

Während der Server eine Schnittstelle abhört und dieDie Anwendung löst einen Hostnamen auf, um eine Verbindung zum Server herzustellen. Es ist für mich nicht so offensichtlich, ob der konfigurierte Hostname, mit dem der Server verbunden wurde, auf denselben Host verweist wie der Server oder nicht.

Ich würde so etwas mögen:

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;
}

Ich versuche eigentlich, dies mit zu erreichen QNetworkInterface, QNetworkAddressEntry, QHostInfo, QHostAddress.

Vielleicht gibt es einen einfachen Weg?

Antworten:

0 für die Antwort № 1

QHostAddress hat isLoopback () was sollte dir bringen was du brauchst.

Wenn Sie nur wissen möchten, ob Sie mit sich selbst verbunden sind, ist dies (teilweise?) Ein Duplikat von diese Frage.


0 für die Antwort № 2

Folgendes habe ich bekommen:

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;
}