Inet Verbindung testen
-
Hallo,
ich bin gerade am Programmieren eines C++ Programms für Linux.
Ich würde im Programm nun gerne eine Funktion einbauen mit der ich testen kann ob eine Internetverbindung besteht.
Ich hab daran gedacht ein "ping" einzufügen aber da wäre ich dann vom Host den ich anping abhängig.
Unter Windows gibts die Funktion "InternetGetConnectedState".
Gibt es da auch was für Linux?
Peter1
-
Das Problem dabei ist, dass das Internet dezentral ist und es ist bloß ein Netzwerk. Man kann nicht so einfach sagen, ob man im Internet ist oder nicht.
Um dein Problem zu lösen, musst du mit einer Definition anfangen: Wie definiert man, ob man im Internet ist, oder ob man es nicht ist? Was macht das Internet aus?
Du musst dir also etwas suchen, dass NUR im Internet verfügbar ist. Leider gibt es da nichts, du hast bloß eine Möglichkeit: Du musst die Verbindung zu etwas aufbauen, dass nur im Internet verfügbar ist. Das wäre dann ein Server. Das kann sozusagen jeder sein. Du hast auch richtig erkannt, du wärst dann von einem bestimmten Server abhängig. Aber es gibt wohl kaum eine andere Möglichkeit. Du musst dir einen Anhaltspunkt suchen, der möglichst seltene Ausfälle hat oder dich halt noch mit einem 2. Anhaltspunkt absichern. Das wäre zwar eine unelegante Lösung, aber sie funktioniert wenigstens.
-
eine idee wäre, zu prüfen, ob eine default route existiert. das ist aber dann abhängig vom betriebssystem. eine verbindung nur zum prüfen aufzubauen ist aber immer noch besser als ping, da ping raw sockets und damit root rechte braucht. wenn du eine verbindung aufbauen willst, könntest du google verwenden. das sollte so gut wie immer erreichbar sein.