21 Mart 2016 Pazartesi

Ağ Arayüzleri

NetworkInterface sınıfı
NetworkInterface Sınıfı yazısına taşıdım.

MAC Adresini Alma
WMI ile ağ arayüzleri dolaşılır
ManagementObjectSearcher mos = new ManagementObjectSearcher
("select * from Win32_NetworkAdapterConfiguration");
foreach (ManagementObject mo in mos.Get())
{
  string mac = mo["MACAddress"].ToString();
  
}
IP Adresi Atama
Bazen statik bir IP adresi atamak isteriz.WMI kullanılabilir.
private static void SetIP(string ip_address, string subnet_mask)
{
  ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  ManagementObjectCollection objMOC = mc.GetInstances();

  foreach (ManagementObject objMO in objMOC) {
    if ((bool)objMO("IPEnabled")) {
      try {
        ManagementBaseObject setIP = default(ManagementBaseObject);
        ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic");

        newIP("IPAddress") = new string[] { ip_address };
        newIP("SubnetMask") = new string[] { subnet_mask };

        setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
      }
      catch (Exception generatedExceptionName) {
        throw;
      }
    }

  }
}
Arayüzün Bağlı Olduğunu AnlamaÖrnek
ConnectionProfile internetCon = GetInternetConnectionProfile();

if (internetConnectionProfile != null)
{
    this.IsInternetAvailable = internetConn.GetNetworkConnectivityLevel() ==
                                         NetworkConnectivityLevel.InternetAccess;

   if (internetConnec.NetworkAdapter.IanaInterfaceType != 71) 
   {
     var isRoaming = internetConnectionProfile.GetConnectionCost().Roaming;

    //user is Low on Data package only send low data.
    var isLowOnData = internetConn.GetConnectionCost().ApproachingDataLimit;

    //User is over limit do not send data
    var isOverDataLimit = internetConn.GetConnectionCost().OverDataLimit;
    IsWifiConnected = true;
  }
  else //Connection is a Wi-Fi connection. Data restrictions are not necessary. 
  {
    IsWifiConnected = true;

  }
}

Hiç yorum yok:

Yorum Gönder