C# - Internetkapcsolat jellemzői

forráskód letöltése
Az Internetet is elérő alkalmazások fejlesztésekor hasznos lépés, ha a webes kérés lefuttatása előtt programunk képes megvizsgálni, hogy az adott számítógép rendelkezik-e Internetes kapcsolattal. Erre a célra használhatunk egy API metódust, melynek segítségével lekérdezhetjük az adott kapcsolat jellemzőit, állapotát, típusát. Cikkünkben ezzel a metódussal ismerkedhetünk meg közelebbről.
A metódus neve InternetGetConnectedState, és a WININET.DLL dinamikusan szerkeszthető könyvtárban található. Segítségével információkat kérdezhetünk le a számítógép Internetes kapcsolatáról. A metódus menedzselt deklarációja a következő:
InternetGetConnectedState
Osztály:
public static extern bool InternetGetConnectedState(
out int ulFlags, uint ulReserved
)
Kapcsolat információinak lekérdezése.
Paraméterek
out int ulFlags
Egy egész szám, melynek értéke függ a kapcsolat aktuális jellemzőjétől.
uint ulReserved
Foglalt, értéke nulla.
Visszatérési érték
Amennyiben a számítógép rendelkezik Internetes kapcsolattal, akkor a visszatérési érték TRUE, egyébként FALSE.
A metódus meghívása után tehát rögtön eldönthető, hogy van-e kapcsolata az adott számítógépnek a világhálóval, vagy sem. Utóbbi esetben minden további, az Internet felé irányuló kérést megvalósító kód lefuttatása fölösleges.
A metódus első paraméterében kapunk egy számot, melynek értékéből következtethetünk a kapcsolatra. A lehetséges értékeket a következő táblázat foglalja össze.
Konstans Magyarázat
INTERNET_CONNECTION_MODEM A számítógép modemet használ a kapcsolódáshoz.
INTERNET_CONNECTION_LAN A rendszer egy helyi hálózaton keresztül kapcsolódik az Internetre.
INTERNET_CONNECTION_PROXY A lokális rendszer egy proxy szervert használ a kapcsolódáshoz.
INTERNET_CONNECTION_CONFIGURED A rendszer rendelkezik Internetkapcsolattal, de jelenleg nem kapcsolódik.
INTERNET_RAS_INSTALLED RAS van installálva a rendszerre.
INTERNET_CONNECTION_OFFLINE Jelenleg OFFLINE módban dolgozik.
A konstansok értékei kötöttek, ezeket is a Win32 osztályban deklaráltuk. A metódus hívása a következőképpen történik:
bool result = Win32.InternetGetConnectedState(out flags,0);
Majd a kapott konstans értékét lekérdezve jelenítjük meg a kapcsolat jellemzőit.
if ((flags & Win32.INTERNET_CONNECTION_MODEM) == Win32.INTERNET_CONNECTION_MODEM)
{
  listBox1.Items.Add("Modemes kapcsolat");
}
if ((flags & Win32.INTERNET_CONNECTION_LAN) == Win32.INTERNET_CONNECTION_LAN)
{
  listBox1.Items.Add("Internetkapcsolat helyi hálózaton keresztül");
  ...