Wie kann ich in Python prüfen, ob eine Internetverbindung vorhanden ist?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde einfach schauen, ob ein gewisser Server erreichbar ist. Bei meinem folgenden Beispiel habe ich dazu den Google-DNS-Server mit der IP 8.8.8.8 verwendet. [Man sollte natürlich darauf achten, dass man einen Server verwendet, der möglichst immer erreichbar ist, solange man Internet hat.]

import socket
import warnings

def internet(host="8.8.8.8", port=53, timeout=3):
    """
    Check internet connection by trying to reach the specified host.
    [Default: 8.8.8.8 (Google-DNS-Server) on port 32]
    """
    try:
        socket.setdefaulttimeout(timeout)
        socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
        return(True)
    except socket.error as exc_msg:
        warnings.warn(exc_msg)
        return(False)

if internet():
    print("Internet!")
else:
    print("Kein Internet!")

Ja, bau einfach testweise eine Verbindung zum Server auf. Je nach OS kannst du vielleicht irgendwie den Status abfragen, aber bringt dir eigentlich nicht viel.

Versuche den Service den du erreichen willst aufzurufen und handle die Fehler. Bringt dir auch viel mehr als den Internet Status zu prüfen weil bestimmte Services trotzdem nicht erreichbar sein können.