Zjištění dostupnosti připojení k Internetu   zodpovězená otázka

VB.NET

Zdravím,

jelikož tu máme zase podzim, a s ním zcela nečekaně podzimní počasí, opět začínám zažívat ty skvělé podzimní dny, při kterých můžu dělat jediné: sedět u Internetu. Bohužel jedním z důsledků tohoto úžasného počasí je i to, že čas od času prostě vypadne Internet (mě se to tedy stává).

Už pár týdnů dělám na menší aplikaci, pomocí které můžete psát články a pak je posílat na FTP. Aplikace pracuje z šablonou, kterou ze serveru stáhne. Doposud vše fungovalo skvěle, ale při právě jednom z těchto podzimních dní, kdy mi nešel Internet se šablona (css soubor) nestáhla a rozhraní aplikace se tedy změnilo k nepoznání.

Můj problém je následující: potřebuji zjistit, zda je aktuálně připojení k Internetu dostupné. Momentálně to řeším odeslaným FtpRequestem, jehož výsledek se buď přihlásí na server, anebo vyhodí výjimku. Používám ale jednorázové požadavky (tzn. neudržím připojení KeepAlive) a to trvá zhruba 3 - 5sekund.

Při odesílání článku na FTP je to v pohodě, uživatel počítá s tím, že si nějakou tu chvilku počká, ale při spuštění aplikace je reychlost verifikace moc dlouhá, než abych mohl tento způsob kontroly považovat za dobrý.

Potřebuji tedy poradit, jak můžu co nejrychleji zjistit, zda je připojení dostupné.

Předem děkuji!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Před časem jsem měl problém na kabelu, který někdy byl, někdy ne. Abych vystopoval, jak se to v průběhu dne mění - a mohl tak spolu se servisní firmou vystopovat příčiny problémů, udělal jsem si jednoduchou aplikaci, kde jsem dostupnost spojení v pravidelných intervalech testoval obyčejným pingem na IP adresu mého providera.Pokud spojení bylo k dispozici, reakce je takřka okamžitá, pravda, pokud nebylo, chvíli se to pokoušelo navázat spojení, takže pokud by tato vlastnost nevadila, doporučuji zkusit tuto cestu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jenom pro úplnost ta funkční část programu vypadala asi takto:


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim pink = New Ping
        Dim odpovedModem As PingReply
        Dim odpovedInternet As PingReply
        Dim retezec As String = ""

        

        retezec = Now.ToString & " -> " & vbTab


        retezec &= My.Settings.adrModem & " :  "
        odpovedModem = pink.Send(My.Settings.adrModem)
        If odpovedModem.Status = IPStatus.Success Then
             retezec &= odpovedModem.RoundtripTime.ToString & " ms." & vbTab
        Else
             retezec &= "NEDOSTUPNÉ" & vbTab
        End If


        odpovedInternet = pink.Send(My.Settings.adrInternet)

        retezec &= My.Settings.adrInternet & " :  "

        If odpovedInternet.Status = IPStatus.Success Then
            retezec &= odpovedInternet.RoundtripTime.ToString & " ms." & vbCrLf
            Me.Text &= "."
        Else
            retezec &= "NEDOSTUPNÉ" & vbCrLf
            Me.Text &= "!"
        End If

        Me.TextBox1.Text = retezec & Me.TextBox1.Text

        citac += 1
        If citac >= 10 Then
            citac = 0
            Me.Text = "Pinkám"
            zapisData()      ' zapíšu data do log souboru a jedu znovu
        End If
    End Sub

Jinak testuju jednak připojení ke svému modemu (abych vyloučil problém v mé síti) a pak spojení k IP providerovi. Z obojího složím řádek výsledků, až je těch řádků 10, vče zapíšu do souboru a začínám další desítku.

Jo a v tom My.Settings.adrModem a My.Settings.adrInternet mám jako text običejnou IP adresu modemu resp. serveru mého providera.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky, tímhle jsi mi dost pomohl! Ta chvilka testů znovupřipojení při nedostupnosti sítě je celkem bezvýznamná, protože ji vyrovná doba vytvoření požadavku pro stažení šablony a její stažení, přičemž bude doba spouštění aplikace v obou případech velmi podobná.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback