Kezdőlap > .NET, Windows Phone 7 > Hálózati Információk

Hálózati Információk

2012. március 13. kedd Hozzászólás Go to comments

Lekérdezhetjük, hogy jelenleg van-e hálózati lefedettségünk. Ehhez a NetworkInterface.GetIsNetworkAvailable() metódust használhatjuk fel. A NetworkInterface a System.Net.NetworkInformation névtérben található.

bool IsNetwork = NetworkInterface.GetIsNetworkAvailable();

txtIsNetwork.Text = IsNetwork.ToString();

Tulajdonképpen csak azt mondja meg, hogy van-e hálózat vagy sem, arról, hogy a hálózat milyen, már további információkat nem ad. Azt se tudjuk meg, ha változás történik. Ahhoz, hogy figyeljük, hogy történt-e változás, a NetworkChange NetworkAddressChanged eseményére kell feliratkoznunk:

public MainPage()

{

    InitializeComponent();

NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);

}

 

void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)

{

    bool IsNetwork = NetworkInterface.GetIsNetworkAvailable();

    txtIsNetwork.Text = IsNetwork.ToString();

}

A Windows Phone 7 első változatában nem sok információ állt a hálózatról rendelkezésünkre, ez viszont változott a Mango frissítéssel. Immár van egy Microsoft.Phone.Net.NetworkInformation névtér, azon belül pedig két, információban igencsak gazdag osztály: az egyik a DeviceNetworkInformation, a másik pedig a már említett NetworkInterface. Ezek az osztályok lehetővé teszik, hogy megtudjuk, az eszköz csatlakoztatva van-e a hálózathoz, és ha igen, mi a kapcsolat típusa. Ez az információ nagyon hasznos lehet, amikor olyan alkalmazást készítünk, amihez aktív hálózati kapcsolat szükséges, vagy jelentős mennyiségű adatot kell letöltenünk Wi-Fi-n vagy celluláris hálózaton keresztül.

Oldjuk fel a Microsoft.Phone.Net.NetworkInformation névteret (ha hozzáadtuk a System.Net.NetworkInformation névteret, most célszerű eltávolítani) a következő kóddal:

using Microsoft.Phone.Net.NetworkInformation;

Ezt követően kérdezzünk néhány alapvető információt a készülékről:

bool IsConnected = DeviceNetworkInformation.IsNetworkAvailable;

bool IsCellularDataEnabled = DeviceNetworkInformation.IsCellularDataEnabled;

bool IsCellularDataRoamingEnabled = DeviceNetworkInformation.IsCellularDataRoamingEnabled;

bool IsWifiEnabled = DeviceNetworkInformation.IsWiFiEnabled;

Lekérdezzük, hogy van-e hálózatunk (csakúgy, mint a fentebbi esetben, csak itt a DeviceNetworkInformation-t használjuk fel erre a célra), ezenkívül lekérdezzük, hogy a mobil adatforgalom engedélyezve van-e mind itthon, mind külföldön, ugyanis lehetőségünk van például arra, hogy külföldön ne engedélyezzük az alkalmazás számára, hogy neten keresztül kommunikáljon. Az IsWiFiEnabled –del megtudhatjuk, hogy a Wi-Fi engedélyezve van-e.

Lekérdezhetjük a hálózat nevét is, amihez csatlakozunk, azaz, hogy Vodafone, T-Mobile, Telenor stb.

string MobileOperator = DeviceNetworkInformation.CellularMobileOperator;

Ami fontosabb, hogy most már a kapcsolatunk típusát is lekérdezhetjük. Ehhez most külön metódust írunk a felhasználóbarát megjelenítésért:

string ConnectionType = GetInterfaceTypeString(NetworkInterface.NetworkInterfaceType);

A metódus picit hosszú, mert a NetworkInterfaceType-nak elég sok változata létezik:

private string GetInterfaceTypeString(NetworkInterfaceType networkInterfaceType)

{

    switch (networkInterfaceType)

    {

        case NetworkInterfaceType.AsymmetricDsl:

            return "Asymmetric DSL";

        case NetworkInterfaceType.Atm:

            return "Atm";

        case NetworkInterfaceType.BasicIsdn:

            return "Basic ISDN";

        case NetworkInterfaceType.Ethernet:

            return "Ethernet";

        case NetworkInterfaceType.Ethernet3Megabit:

            return "3 Mbit Ethernet";

        case NetworkInterfaceType.FastEthernetFx:

            return "Fast Ethernet";

        case NetworkInterfaceType.FastEthernetT:

            return "Fast Ethernet";

        case NetworkInterfaceType.Fddi:

            return "FDDI";

        case NetworkInterfaceType.GenericModem:

            return "Generic Modem";

        case NetworkInterfaceType.GigabitEthernet:

            return "Gigabit Ethernet";

        case NetworkInterfaceType.HighPerformanceSerialBus:

            return "High Performance Serial Bus";

        case NetworkInterfaceType.IPOverAtm:

            return "IP Over Atm";

        case NetworkInterfaceType.Isdn:

            return "ISDN";

        case NetworkInterfaceType.Loopback:

            return "Loopback";

        case NetworkInterfaceType.MobileBroadbandCdma:

            return "CDMA Broadband Connection";

        case NetworkInterfaceType.MobileBroadbandGsm:

            return "GSM Broadband Connection";

        case NetworkInterfaceType.MultiRateSymmetricDsl:

            return "Multi-Rate Symmetrical DSL";

        case NetworkInterfaceType.None:

            return "None";

        case NetworkInterfaceType.Ppp:

            return "PPP";

        case NetworkInterfaceType.PrimaryIsdn:

            return "Primary ISDN";

        case NetworkInterfaceType.RateAdaptDsl:

            return "Rate Adapt DSL";

        case NetworkInterfaceType.Slip:

            return "Slip";

        case NetworkInterfaceType.SymmetricDsl:

            return "Symmetric DSL";

        case NetworkInterfaceType.TokenRing:

            return "Token Ring";

        case NetworkInterfaceType.Tunnel:

            return "Tunnel";

        case NetworkInterfaceType.Unknown:

            return "Unknown";

        case NetworkInterfaceType.VeryHighSpeedDsl:

            return "Very High Speed DSL";

        case NetworkInterfaceType.Wireless80211:

            return "Wireless";

        default:

            return "Unknown";

    }

}

Látható, hogy hálózati és kapcsolati információkat a Mango frissítéstől nagyon egyszerűen lekérdezhetünk. Ezzel együtt az is elmondható, hogy a System.Net.NetworkInformation ilyen téren elavult, és már sokkal célszerűbb a hálózati információk meghatározására a Microsoft.Phone.Net.NetworkInformation névteret használni.

MSDN Cikk

Kategóriák:.NET, Windows Phone 7 Címke: , , ,
  1. Tóth Benedek
    2012. március 13. kedd - 11:05

    Az utolsó részhez hozzászólva, a WP7 csak a Wireless80211, MobileBroadbandCdma, MobileBroadbandGsm és az Ethernet csatlakozást használja. Ha sávszélesség-kímélővé szeretnénk tenni az appunkat, ahhoz ezek nagyon egyszerű lehetőséget kínálnak.
    A Network change-be egyszer belenéznék mélyebben is, pl mi csinál a WebClient mikor elmegy a wifi vagy utazás közben nincs térerő sem.

  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: