Internetverbindung prüfen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von Xylon.

    wow... so ein gewaltiger Aufwand nur um zu wissen ob man ins Internet kann oder nicht? Ich wäre ja eher dafür einfach mit dem gewünschten Prozess anzufangen, und dann eben die Exception die fliegt, wenn man eben nicht nach wo auch immer hin connecten kann abfängt. Dann kann man sicher sein, dass keine Verbindung besteht. Man sollte sowieso jederzeit damit rechnen, dass die Verbindung flöten geht.
    Naja, gewaltig ist relativ :D
    Natürlich etwas mehr Aufwand, wenn es nicht geht, aber das kann ja überall sagen. ;)

    Ich finde die WinAPI macht ihren Job da gut. Pings sind halt so ne Sache, wenn iwas down ist o. ä.
    Und einfach anfangen ist halt nicht immer das Gelbe vom Ei. ^^
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Außerdem kann man so was dazu lernen :D Wobei ich C# deutlich schwieriger finde als VB. Ich habe mal ein Testprojekt erstellt und den Code von oben verwendet, leider ohne Erfolg. Scheint also als ob ich irgendwas falsch mache :/ Ich werd mich wohl doch lieber erst mit VB befassen, zumindest bis ich das Projekt fertig habe. Jetzt so mittendrin mit C# anzufangen halte ich eher für Kontraproduktiv :D Mit Prozessen wird das leider nichts. Ich will nicht nur einfach so ins Internet connecten, ich muss alle paar Sekunden einfach überprüfen ob die Verbindung besteht und stabil ist. Ich werde mal gucken ob ich das nicht irgendwie alles umgehen kann um ans Ziel zu gelangen. Wenn jemand noch ne Lösung weiß dann immer her damit. An alle noch mal Danke! :D
    Wie willst Du denn prüfen, ob die Verbindung stabil ist? Wenn es Dir darum geht, dann würd ich mich mal mit dem Webinterface Deines Routers beschäftigen, die geben oft recht interessante Anhaltspunkte.

    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Genau, weil ja auch jeder Router im LAN die Infos einfach so zur Verfügung stellt ... oder noch besser, der Router immer erreichbar ist.

    @TE:
    Zu deinem Anfangs Post: Das ist ganz normal, das wenn keine Verbindung besteht er dir das nicht instant mitteilt, immerhin wartet er auf die Antwort bis zum Timeout und dass das GUI einfriert liegt ganz allein an deinem bescheidenen Code. Trenne die Logik vom UI und es hängt nicht mehr, dann musst du nur noch das Result abwarten. Jedoch weise ich dich nochmals auf die schon genannten Probleme hin:
    Nur weil dein Ziel nicht auf den Ping antwortet heißt das noch lange nicht das du keine Verbindung ins Netz hast, das kann verschiedene Gründe haben zb. die Firewall, schlechte Verbindung zum Ziel (Timeout) oder die Adressauflösung schlägt fehl.
    Hat niemand gesagt, dass jeder Router das bereitstellt und keiner hat gesagt, dass dieser es einfach so bereitstellt, Musst mal genau lesen: Ich sagte, er sollte sich mal mit dem Webinterface beschäftigen. Was pisst Du mich hier an?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Wo piss ich dich an? Dein Vorschlag ist einfach nur unnötig, wenn man davon ausgeht dass das Programm auch woanders laufen soll muss er für jeden Router die Überprüfung implementieren und zuvor noch den Router identifizieren, dann das nächste Problem: Was wenn der Router die Infos nicht preis gibt oder nicht erreichbar ist?

    Da kann er genauso gut direkt mit seiner Logik anfangen und wenn die auf die Nase fällt dem User die Fehlermeldung anzeigen.
    Also...ich habe ein wenig rumprobiert. Diesmal klappts:

    Visual Basic-Quellcode

    1. Public Function IsConnectionAvailable()
    2. Dim siteResponds As Boolean = True
    3. Try
    4. siteResponds = My.Computer.Network.Ping("www.google.de")
    5. Catch ex As Exception
    6. siteResponds = False
    7. MsgBox("No internet connection avaiable.", MsgBoxStyle.Critical, "Warning")
    8. End Try
    9. Return siteResponds
    10. End Function