8 Şubat 2017 Çarşamba

NetworkInterface Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.Net.NetworkInformation.NetworkInterface;
Java'daki NetworkInterface Sınıfı ile aynı işlevi görür.

GetAllNetworkInterfaces metodu
Şöyle yaparız.
NetworkInterface netif =NetworkInterface.GetAllNetworkInterfaces()
GetIPProperties metodu
IP özelliklerini döner. Şöyle yaparız.
IPInterfaceProperties properties = nic.GetIPProperties();
Eğer arayüzünü ismini biliyorsak şöyle yaparız.
NetworkInterface netif = NetworkInterface.GetAllNetworkInterfaces()
 .Single(networkInterface => networkInterface.Name.ToLower() =="loopback");

IPInterfaceProperties propss = netif.GetIPProperties();
UnicastIPAddressInformationCollection unicastIpAddress = props.UnicastAddresses;

Console.Write(netif.Name + ": ");
Console.WriteLine(unicastIpAddress[1].Address);
İstediğimiz arayüzlerin IP adreslerini şöyle alırız.Önce bir arayüz isimlerini bir diziye doldururuz.
var networkInterfaceNames = new HashSet<string>() {
  "Local Area Connection",
  "Loopback Pseudo-Interface 1"
};
Daha sonra bu isimlere sahip arayüzleri seçeriz.
var localIpAddresses = NetworkInterface
  .GetAllNetworkInterfaces()
  .Where(ni => networkInterfaceNames.Contains(ni.Name))
  .Select(
    ni => ni
      .GetIPProperties()
      .UnicastAddresses
      .First(ua => ua.Address.AddressFamily == AddressFamily.InterNetwork)
  );
GetIsNetworkAvailable metodu - Tüm Arayüzler İçin
Şöyle yaparız.
if (NetworkInterface.GetIsNetworkAvailable()) {...}
GetIsNetworkAvailable metodu - Tek Bir Arayüz İçin
Arayüzün "up" veya "down" olduğunu bildirir.
Console.WriteLine("Network interface {0} is {1}", 
                           adapter.Id,
                           (adapter.GetIsNetworkAvailable()?"up":"down")
                         );
GetPyhsicalAddress metodu
Şöyle yaparız.
macAddr =
    (
        from nic in NetworkInterface.GetAllNetworkInterfaces()
        where nic.OperationalStatus == OperationalStatus.Up
        select nic.GetPhysicalAddress().ToString()

    ).FirstOrDefault();
Eğer Linq kullanmak istemezsek şöyle yaparız.
foreach(var nic in NetworkInterface.GetAllNetworkInterfaces())
{
   if(nic.OperationalStatus == OperationalStatus.Up)
   {
    return nic.GetPhysicalAddress();
   }
}
return string.Empty();
Id Alanı
Her arayüzün bir numarası vardır.

Name Alanı
Her arayüzün bir ismi vardır. Şöyle yaparız.
NetworkInterface netif =NetworkInterface.GetAllNetworkInterfaces()
 .Single(networkInterface => networkInterface.Name.ToLower() =="loopback");
Type Alanı
Şöyle yaparız.
if (netif.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 
     || netif.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
  ...
}
Şöyle yaparız.
NetworkInterface ni = ...;
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 &&
    ni.OperationalStatus    == OperationalStatus.Up) {
  ...
}


Hiç yorum yok:

Yorum Gönder