ping in C++



  • Hey!
    Ich will einfach testen, ob eine bestimmte IP im (lokalen) Netz vorhanden ist, mit was mach ich das am besten?
    Ich hab schon bei codeproject.com nachgeschaut, allerdings nur etwas gefunden, das nur unter Windows läuft (wenn ichs richtig versteh...)

    Schonmal danke!



  • Machs doch mit ping
    zB. ping 192.168.178.1



  • ja schon, aber die funktion gibt es in c++ ja nicht...



  • Achso in C++ (stand in deinem ersten post nicht!)
    http://www.pronix.de/pronix-25.html
    Lies dir das mal durch (ist C dürfte aber für C++ nicht von belang sein)

    Ich denke der Abschnitt über udp sollte für dich interessant sein.
    Ansonsten solltest du dir vll. auch den Sourcecode von ping besorgen.



  • Danke!
    Ich hab mir beides Mal angeschaut und hab versucht, den Sourcecode von ping so zu ändern, wie ich ihn brauche, war aber keine so schlaue Idee 👎

    Naja ich werd mich morgen nochmal damit beschäftigen!
    Es gibt aber keine Funktion in C++, mit der man sowas machen kann oder?

    Achja, das Thema hätte wohl doch woanders reingehört, habe bloß am Anfang gedacht, dass es ein spezielles Linux-Problem ist, da ich für Windows vermeintlich etwas gefunden hatte!



  • unter linux gibt es doch das programm "ping" auch. davon kannst du dir den sourcecode holen und benutzen, oder du machst es mit system("ping xxx.xxx.xxx.xxx").



  • Kann man mit system("ping ...") auch die Ausgabe auswerten? Ich will ja wissen, ob die IP zu erreichen ist...

    (Bin nicht sehr erfahren mit C++...)



  • tyho schrieb:

    Kann man mit system("ping ...") auch die Ausgabe auswerten?

    Nein, dafür verwendet man man: popen(3).



  • OK danke erstmal... Allerdings weiß ich nicht so genau, wie man mit popen umgeht.
    Da ich das gleiche schonmal mit Python gemacht habe und da das auch mit popen ging, hab ich mir gedacht, vielleicht geht der Rest auch so. Rausgekommen ist folgender Code, der (natürlich) nicht funktioniert:

    int main()
    {
        string Ausgabe;
        Ausgabe = repr(popen("/home/till/projekte/Steuerung/v1.0/Example", "r").read());
    
        cout << Ausgabe;
        pclose("/home/till/projekte/Steuerung/v1.0/Example");
    }
    

    Ausgabe beim Kompilieren:

    start.cpp: In function ‘int main()’:
    start.cpp:11: error: request for member ‘read’ in ‘popen(((const char*)"/home/till/projekte/Steuerung/v1.0/Example"), ((const char*)"r"))’, 
    which is of non-class type ‘FILE*’
    start.cpp:11: error: ‘repr’ was not declared in this scope
    start.cpp:14: error: cannot convert ‘const char*’ to ‘FILE*’ for argument ‘1’ to ‘int pclose(FILE*)’
    

    Ich hoffe, es ist verständlich, was ich erreichen wollte... Wie geht das richtig? Freue mich über jede Hilfe

    PS: Kenn mich in C++ noch nicht so aus 🙄


Anmelden zum Antworten