C++ system("Ping") Rückgabewert

angryolex

Cadet 2nd Year
Registriert
Nov. 2007
Beiträge
24
Hallo,

ich möchte, dass die Funktion system("Ping") einen boolean wert zurückgibt, also true wenn die Ausgabe "Antwort von..." heißt und false wenn die Ausgabe "Zeitüberschreitung..." heißt.
Also hab ich mir gedacht die ganze Sache so aufzubauen:
Code:
 bool connection()
{
system("Ping/t" +ip)
}

while(connection() != true)
{
fehler();
}

Aber es scheint, er gibt immer True aus, sodass selbst wenn keine verbindung steht, fehler() nicht ausgeführt wird!

also, wie kann ich das Problem lösen, und system("Ping") bei nichtvorhandener Verbindung false zurückgeben lassen?
 
Deine connection-Funktion hat ja überhaupt keinen Rückgabewert ("return"). Des Weiteren gibt system ja auch nicht zurück ob der Ping durchgekommen ist. Laut http://www.cplusplus.com/reference/clibrary/cstdlib/system.html gibt es ja nur zurück ob der Befehl selbst erfolgreich ausgeführt wurde (also ob der ping-Befehl gefunden wurde und er ausführbar war, nicht aber was das Ergebnis des Ping-Befehls ist!), wobei das auch noch abhängig vom Betriebssystem ist. Du müsstest da eher eine exec-Variante nutzen bei der du den Output liest und nach dem Wort durchsuchst. Wesentlich besser und auch wirklich plattformunabhängig wäre es aber wenn du den Ping direkt in c implementierst. Dazu gibts im Netz unzählige Implementierungen => google.
 
Zurück
Oben