C++ Ping "abfangen"

E

ETS223

Gast
Hey Ihr
ich habe schon stundenlang gesucht, aber leider nichts passendes gefunden.
Mein Problem ist, dass eine bestimmte Funktion nur dann aufgerufen werden soll, wenn ein bestimmter Ping erfolgreich war.
Dieser Ping wird aus dem Programm herraus gesendet. Und nun möchte ich, dass in eine Datei geschrieben wird, ob der Ping erfolgreich war.
Um die Datei geht es hier nicht, ich brauch nur die passende Bedingung (if "ping-erfolgreich"), damit nur geschrieben wird, wenn der Ping erfolgreich war.

Ich hoffe, mir kann jemand schnell helfen.

MfG
 
Kenn mich mit C++ nicht wirklich aus aber ich denke es wird bestimmt eine ähnlich Klasse wie InetAddress(Java!) geben.
Von der erzeugte Objekte sollten dann Methoden, welche einen Ping durchführen, mitbringen, die einen boolischen Wert zurückgeben.

So kann es in Java aussehen: gibt sicher bessere Lösungen ;)
Code:
if (InetAddress.getByName(address + Integer.toString(host)).isReachable(2000)) {
    // Restliche Prozedur
}
 
Hm dein Problem ist nicht ganz einfach, der Ping Befehl ist leider fest in Windows inetgriert, kann sein das ich mist laber aber Netzwerkaktivitäten usw. müsstest du mit einem api Hook abfangen das nicht ganz einfach.
Oder ne dll injektion bei der Treiber dll
 
Schau dir das mal an: Ping mit Winsock

Solltest gutes Englisch mitbringen & ich hoffe es ist was du suchst bzw. womit du was anfangen kannst :)
 
Zuletzt bearbeitet:
Erstmal danke für eure Hilfe. Ich werde mir bei Gelegenheit die Quellen mal zu Gemüte ziehen und mich zu diesem Thema wieder melden ;)
 
@DragonIce, leider hat mir dein link auch nicht weitergeholfen. ich habe jetzt ein progrmam gefunden, das bei einem user scheinbar funktioniert hat: http://www.tutorials.de/forum/c-c/251301-ergebnis-von-ping-befehl-txt-schreiben.html

Allerdings liefert mir mein Compiler folgende Fehler:

E:\Daten\Schüler\ping\main.cpp In function `int main(int, char**)':

8 E:\Daten\Schüler\ping\main.cpp ISO C++ forbids comparison between pointer and integer

18 E:\Daten\Schüler\ping\main.cpp `memset' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

E:\Daten\Schüler\ping\Makefile.win [Build Error] [main.o] Error 1



Ich kann damit leider rein gar nichts anfangen. Kannst du mir bei den Fehlern helfen oder sollte ich es doch lieber auf einen ganz anderen Weg versuchen?
Bei dem Programm wird so weit ich es verstanden habe die Konsolen-Ausgabe in eine Datei einegtragen, was notfalls ginge, aber was sich sicherlich besser lösen lässt.


Des Weiteren habe ich den Quellcode auf folgendem Link einmal ausprobiert:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/icmpsendecho.asp

Die Bilbiothek ist (meiner Meinung nach, bin mir abe rnicht sicher) richtig eingebunden, ebenso die Header Datei. Trotzdem gibt es folgende Fehlermeldungen:
[Linker error] undefined reference to `inet_addr@4'
[Linker error] undefined reference to `IcmpCreateFile@0'
[Linker error] undefined reference to `IcmpSendEcho@32'
[Linker error] undefined reference to `inet_ntoa@4'
ld returned 1 exit status
C:\Dokumente und Einstellungen\ESSS\Desktop\ping2\Makefile.win [Build Error] [Project1.exe] Error 1


Wo könnte hier der Fehler liegen?



Edit: So, ich habe mein Problem jetzt selber gelöst. Ich schreibe mein Pingergebnis einfach in eine txt-Datei und untersuche diese. Somit kann ich das Ergebnis ganz einfach abfragen und muss nicht groß rumprogrammieren. Aber danke für eure Hilfe, auch wenn sie mir jetzt nicht viel gebracht hat ;)
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben