Ping



  • Hi,

    wüßte von Euch vielleicht jemand, wie ich einen Ping unter Linux vielleicht auch Solaris realisieren kann.

    Ich habe die Suchfunktion bereits verwendet, allerdings sind mir dort nur zwei Varianten aufgefallen:
    1. Ping als Konsolen-Befehl versenden und Rückgabe-Text verarbeiten.
    --> Diese Möglichkeit würde ich sehr ungerne verwenden. Es wäre schön eine elegantere vielleicht sogar schnellere Methode zu benutzen.

    2. Ich weiß nicht, wie genau es realisiert ist, aber ich habe eine "Hardcore"-Mogleichkeit gefunden. Der Download von "Ping.c". Sieht zwar alles ganz schön aus, aber übersteigt vielleicht etwas meine Grenzen.

    Schön wäre ein Mittelweg. Wenn ich z.B. einen FTP-Client entwickle, mache ich das schließlich auch nicht, indem ich den FTP-Befehl an die Konsole sende und auch nicht, indem ich mit Assembler (etwas übertrieben) praktisch das Rad neu erfinde.

    Kurz gefaßt: Gibt es eine Möglichkeit unter Linux mit C++ eine (für mich 😉 verständliche Funktion zu realisieren, die pingt und dazu nicht über die Konsole läuft?

    Vielen Dank im voraus.
    ---------------------------------------------------------
    Sorry übrigens, falls das schön x-mal diskutiert wurde. Aber ich konnte leider nichts finden, womit ich etwas anfangen kann --> bin etwas neu in der Unix-Programmierung...



  • www.zotteljedi.de
    lies dir das ping-beispiel durch. wird mit raw sockets gemacht, ist portabel auf viele systeme. steigst du da nicht durch, musst du dich hinsetzen und lesen/lernen. sonst wird das mit dem ftp-client nix 😉



  • Tag,

    Korbinian hat recht. Wenn du pingen willst implementier es selbst.



  • in dem Buch "Programmieren von UNIX-Netzwerken" von W. Richard Stevens findest du auch eine ausfuehrliche ICMP (v4/v6) Beschreibung inklusive eines Beispiel zum Thema ping. (Das Buch lohnt sich eh, wenn man unter einem POSIX kompatiblen System programmiert (wie zB. BSD, UNIX oder Linux))



  • Tag,

    Ich dachte das Buch gäbe es garnicht mehr. Oder gibts mittlerweile ne neue Auflage ?



  • Falls du mit "BorlandUser" andeuten willst, dass du Kylix benutzt: da gibt's 'ne fertige ICMP-Komponente unter "Indy Clients".



  • @Jansen
    Nein, mit BorlandUser meinte ich bisher eigentlich Borland C++ Builder6 und jetzt Borland C++ BuilderX. Mit Borland C++ BuilderX versuche ich nun gerade ein Programm zum pingen für Solaris und Linux zu entwickeln.

    @Korbinian
    Danke, Danke. Der Link war wirklich hilfreich. Habe mich nun sehr viel in die gesamte Struktur eingelesen. Glaube auch einen einigermaßen klaren Durchblick erlangt zu haben.

    Nun hat sich aber folgendes Problem ergeben. Ich habe netinet/ip_icmp.h mit include eingebunden und muß nun leider feststellen, daß diese Datei scheinbar in C geschrieben ist. Ich habe auch Probleme mit einem C++-Programm darauf zuzugreifen. Gibt es eine Version dieser Datei für C++ oder vielleicht einen Wrapper, den ich verwenden könnte?

    Um zu Testen, ob es an meinem Programm oder tatsächlich an dem C-SourceCode liegt, habe ich auch verschiedene Beispielprogramme (die ich nach langem Suchen doch im Internet finden konnte) verwendet, die alle beim Build scheiterten --> selbe Ursache, wie bei meinem Programm.

    Danke, schon mal.



  • versuch mal

    extern "C" {
    #include <netinet/ip_icmp.h>
    }
    

    ansonsten geb am besten mal die Fehlermeldungen an



  • Sehr gut, Danke!

    Es sieht zumindest so aus, als würde es funktionieren. Der Compiler läuft ohne Fehlermeldung durch, zumindest bei einem leeren Programm, indem ich nur die Datei mit include einbinde. Ich werde jetzt noch probieren, ob ich auch auf alles zugreifen kann. Aber danke schon mal!!! 😃


Anmelden zum Antworten