qabstractsocket

___ answer38087235 ___

Nejats Code funktionierte auch nicht für mich. Vielleicht ist es Windows-spezifisch (getestet unter Windows 7 x64 + Qt 5.6). Der Ping-Befehl scheint Parameter und Werte zu unterscheiden und benötigt diese beim Erstellen von QProcess.

Anstatt also "-n 1" auf einmal zu übergeben, müssen Sie "-n" und "1" getrennt übergeben.

Grundsätzlich wäre es mit Nejats Code:

%Vor%

Getestet und funktioniert jetzt.

    
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ qstnhdr ___ Erhalte den Ping von einem Remote-Ziel mit Qt (Windows / Linux) ___ tag123ping ___ Ping ist ein Dienstprogramm zur Verwaltung von Computernetzwerken, mit dem die Erreichbarkeit eines Hosts in einem Internet Protocol (IP) -Netzwerk getestet und die Umlaufzeit von Nachrichten gemessen wird, die vom ursprünglichen Host an einen Zielcomputer gesendet werden. ___ qstntxt ___

Momentan verwende ich diesen Code zum Abrufen des Ping eines Zielsystems. Allerdings funktioniert es bisher nur unter Linux und ist wahrscheinlich abhängig von den Gebietsschemaeinstellungen. Das Hinzufügen von Unterstützung für Windows wird wahrscheinlich noch komplizierter. Gibt es einen einfachen Weg oder eine Bibliothek, um den Ping eines Zielsystems zu erhalten? Ich arbeite hauptsächlich mit Qt, also wäre es ideal, wenn ich mit QSockets arbeiten könnte.

%Vor%     
___ answer22937063 ___

Sie können sowohl Windows als auch Linux mit diesem Befehl anpingen:

%Vor%     
___ tag123qtnetwork ___ Das QtNetwork-Modul bietet Klassen, um die Netzwerkprogrammierung einfacher und portabler zu machen. Qt Network bietet eine Reihe von APIs zum Programmieren von Anwendungen, die TCP / IP verwenden. Vorgänge wie Anfragen, Cookies und das Senden von Daten über HTTP werden von verschiedenen C ++ - Klassen gehandhabt. ___ tag123qt ___ Qt ist ein plattformübergreifendes Anwendungsentwicklungs-Framework, das häufig für die Entwicklung von Anwendungssoftware verwendet wird, die auf verschiedenen Software- und Hardwareplattformen ohne oder mit nur geringer Änderung der zugrundeliegenden Codebasis ausgeführt werden kann. Qt ist sowohl mit kommerziellen als auch mit Open-Source-Lizenzen verfügbar. ___ tag123qabstractSocket ___ Die Klasse QAbstractSocket bietet die allen Socket-Typen gemeinsame Basisfunktionalität. ___ answer22946675 ___

Sie müssten Ihren Code dafür ohne %code% schreiben. Kurz gesagt, diese Basisklasse wurde nicht für diesen Anwendungsfall entwickelt.

Der Grund ist, dass Sie rohe Sockets verwenden und als root ausführen müssen; Das ist auch der Grund, warum Sie normalerweise das Setuid-Flag in der ausführbaren Ping-Datei von Linux sehen.

ICMP ist "verbindungslos" und daher ist die Qt-Klasse nicht dafür geeignet, da es keine Daten an einen bestimmten Host sendet usw.

Sie können die ausführlichere Erklärung hier lesen.

>     
___
3
Antworten

Erhalte den Ping von einem Remote-Ziel mit Qt (Windows / Linux)

Momentan verwende ich diesen Code zum Abrufen des Ping eines Zielsystems. Allerdings funktioniert es bisher nur unter Linux und ist wahrscheinlich abhängig von den Gebietsschemaeinstellungen. Das Hinzufügen von Unterstützung für Windows wird wah...
08.04.2014, 11:06