Ich versuche, eine einfache C++ Ping-Funktion zu schreiben, um zu sehen, ob eine Netzwerkadresse reagiert. Ich brauche ICMP nicht speziell, ich muss nur sehen, ob der Server da ist und auf irgendetwas reagiert. Ich habe einige Nachforschungen angestellt und jede Lösung, die ich mir ausgedacht habe, erfordert das Erstellen eines rohen Sockets oder etwas, das erfordert, dass das Programm sudo-Zugriff hat. Ich kann nicht garantieren, dass das System, auf dem ich es ausführe, den Netzwerkstapel ändern kann, daher ist dies nicht gültig.C++ ping-ähnliche Funktion ohne Superuser-Zugriff
Hier sind einige verwandte Fragen, die ich bereits angeschaut habe.
- Opening RAW sockets in linux without being superuser
- ICMP sockets (linux)
- How to Ping Using Sockets Library - C
- Why does ping work without administrator privileges?
- C++ Boost.asio Ping
Es scheint, dass Ping für einen guten Grund Superuser-Zugriff erfordert. Ich möchte nicht absichtlich eine Sicherheitslücke schaffen, ich möchte nur sehen, ob ein Server antwortet. Gibt es eine gute C++ - Funktion oder Ressource, die dies tun kann? Ich werde sicherstellen, dass ich jede mögliche Beispiellösung posten werde. Ich brauche eine Linux (BSD) Socket-Lösung. Da fast jedes Unix-ähnliche System SSH ausführt, kann ich sogar nur gegen Port 22 testen. Ich werde nur Linux-Systeme als Einschränkung anvisieren.
Dank
Scheint, wie Sie bereits die offensichtliche Ansatz versucht haben und prallte gegen einen Wand wegen Zugriffsbeschränkungen. Welche anderen Ansätze können Sie sich vorstellen? Diese Frage ist zu weit gefasst, wenn Sie uns bitten, diejenigen aufzulisten, an die wir denken können. –
Wäre es zu schwer, das Programm 'ping' auszuführen und die Ausgabe zu parsen? – 01d55
Guter Punkt. Ich kann Popen verwenden und es in eine Zeichenfolge schreiben. Lassen Sie mich an einer Beispielcodelösung knacken. Das ist nicht so elegant wie ich dachte, aber Bettler können nicht wählerisch sein. – msmith81886