Nefunguje internet, co mám dělat? Aneb šéfíme v C#

C# .NET Pro pokročilé Nefunguje internet, co mám dělat? Aneb šéfíme v C#

Stalo se vám někdy, že prostě nefungoval internet a vy jste museli čekat a stále se dívat jestli už "naskočil"?

Pojdmě si spolu napsat jednoduchou aplikaci, která nás upozorní až internet naskočí. Je to snadné! Stačí nám klasická konzolová aplikace.

Nejprve si vytvoříme metodu, která bude pingovat danou adresu. Pokud se packet vrátí interne funguje.

Metoda je tak zjednodušená, že není třeba nic vysvětlovat. Jen tak ze zajímavosti se ale určitě podívejte na všechny možnosti, které nám nabízí třída Ping.

public static bool Ping(string url)
{
        Ping ping = new Ping();

        PingReply reply = ping.Send(url, 3000);

        if (reply.Status == IPStatus.Success)
                return true;
        return false;
}

Posílání sms je popsáno v tomto článku: Posílání SMS v C#

A pak jen program zacyklíme. Teď jestli tento článek čte Kit, tak mě bude ten cyklus dlouho vyčítat :D V programu, by se totiž mělo používat co nejméně cyklů, vyvarovat se zanořených cyklů a už vůbec by se nemělo používat nekonečných cyklů. Tzn for(;;) a while(true) nemá v programu co dělat. Ale tohle je jen naše drobná utilitka a dáme si tam Thread.Sleep, aby to nejelo pořád, takže to tolik nevadí :) Jinak, pokud někomu jó tak si vytvoří instanci Windows Form Timeru a bude to samé volat v události Tick :)

static void Main(string[] args)
{
        while (true)
        {
                if (Ping("www.google.com"))
                {
                        sendSMS();
                        MessageBox.Show("Hej funguje to, funguje, popláááách!!!!");
                        break;
                }
                else
                {
                        Console.WriteLine("Zatím nic :'(");
                }
                System.Threading.Thread.Sleep(5000);
        }
}

 

  Aktivity (1)

Článek pro vás napsal David Jančík [sczdavos]
Avatar
Autor je vášnivý programátor v .NET C# a PHP. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.

Jak se ti líbí článek?
Celkem (2 hlasů) :
55555


 


Miniatura
Všechny články v sekci
C# - Pro pokročilé
Miniatura
Následující článek
Tvoříme vlastní Syntax Highlighter

 

 

Komentáře
Zobrazit starší komentáře (3)

Avatar
Michael Olšavský:

Jak se da skyt ta konzole? Ja jen vim, jak na to v nastaveni aplikace, ale kde to muzu nastavit v kodu?

 
Odpovědět 4.11.2012 12:53
Avatar
matesax
Redaktor
Avatar
Odpovídá na Michael Olšavský
matesax:
Hide();
Editováno 4.11.2012 13:02
 
Odpovědět 4.11.2012 13:02
Avatar
Michael Olšavský:

Díky moc

 
Odpovědět 4.11.2012 14:06
Avatar
tkola
Člen
Avatar
tkola:

čau,dneska jsem to zkoušel udělat , a chci jen upozornit že kdo to chce používat měl by si ošetřit " PingReply reply = ping.Send(url, 3000);" protože když odpojíte net tak spadne s chybou. Myslím si že je to tím že se mu nepovede odeslat ping nebo se pletu ?

 
Odpovědět 2.8.2013 14:58
Avatar
Michal Žůrek (misaz):

ve VB.NET je to jednoduší:

If My.Computer.Network.IsAvailable Then
  ' Hello Internet
End If
Odpovědět 25.8.2013 8:10
Nesnáším {}, proto se jim vyhýbám.
Avatar
Lubos857
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Lubos857:

Nikdy jsem toto nepoužíval, ale pokud dobře chápu jak to funguje, bude ti vracet true i v případě, že nejsi připojený k internetu, ale jsi připojený k LAN.

Podle mně by ti tohle fungovalo jen tehdy, kdybys byl připojený přímo přes modem, nebo možná kdybys byl přímo připojený do internetu. To ale není úlplně běžná situace :-)

Odpovědět 25.8.2013 8:36
Protože bagr nežere cukr.
Avatar
Lubos857
Člen
Avatar
Lubos857:

K tomu nekonečnému cyklu. Dá se mu vyhnout třeba takhle:

static void Main(string[] args)
{
        while (!Ping("www.google.com"))
        {
                Console.WriteLine("Zatím nic :'(");
                System.Threading.Thread.Sleep(5000);
        }

        sendSMS();
        MessageBox.Show("Hej funguje to, funguje, popláááách!!!!");
}
Odpovědět 25.8.2013 8:42
Protože bagr nežere cukr.
Avatar
Odpovídá na Lubos857
Michal Žůrek (misaz):

to je fuk jak a co to vrací, pokud se to aspoň trochu eliminuje tak je to fajn.

Odpovědět  -4 25.8.2013 9:39
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Stastny
Redaktor
Avatar
Petr Stastny:

Nejsem expert, ale posílání SMSek bez intu stejně nebude fungovat, ne? :-)

 
Odpovědět 14. června 19:19
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Petr Stastny
Petr Stastny:

Ajo, teď jsem si to prohlédl, ono se to posílá až potom... njn

:D
 
Odpovědět 14. června 19:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 13. Zobrazit vše