19 Ağustos 2017 Cumartesi

Dns Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.Net
BeginGetHostEntry metodu
Girdi olarak google.com gibi bir string alır. Her BeginGetHostEntry çağrısı EndGetHostEntry çağrısı ile sonlandırılmalıdır. Şöyle yaparız.
string hostNameOrAddress = ...; 

ResolveState ioContext = new ResolveState(hostNameOrAddress);
var result = Dns.BeginGetHostEntry(ioContext.HostName, null, null);
Daha sonra istenilen süre kadar beklenir.
int ms = ...;
var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromMilliseconds(ms), true);
if (!success)
{
  ioContext.Result = ResolveType.Timeout;
}
else
{
  try
  {
    var ipList = Dns.EndGetHostEntry(result);
    if (ipList == null || ipList.AddressList == null ||
        ipList.AddressList.Length == 0)
      ioContext.Result = ResolveType.InvalidHost;
    else
      ioContext.Result = ResolveType.Completed;
  }
  catch
  {
    ioContext.Result = ResolveType.InvalidHost;
  }
}
GetHostAddresses metodu
Şöyle yaparız. Örneğin benim bilgisayarımda 4 IPv6, tane de IPv4 adres mevcut
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
GetHostEntry metodu
Girdi olarak google.com gibi bir string alır ve IPHostEntry cinsinden bir liste döner. Listede IPv4 ve IPv6 adresleri bulunur.

Örnek
Çok basit bir kullanım şekli şöyle.
IPHostEntry ipHostInfo = Dns.GetHostEntry("google.com");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
Örnek
Eğer istsersek 0. indeks yerine First() ile de ilk adresi alabiliriz.
private string GetCurrentIP()
{
  return System.Net.Dns.GetHostEntry("SERVER_IP").AddressList.First().ToString();
}
Örnek
Süzerek IPv4 adresi almak istersek şöyle yaparız.
Dns.GetHostEntry("...").AddressList.FirstOrDefault(ip => ip.AddressFamily
 == AddressFamily.InterNetwork);
Örnek
Loop adresleri şöyle alırız.
ip.AddressFamily == AddressFamily.lo
Örnek
Eğer string boş verilirse kendi IP adres veya adreslerimizi buluruz. Şöyle yaparız.
IPHostEntry ipHostEntry = Dns.GetHostEntry(string.Empty);
Örnek
Bigisayarımın adını vererek kendi IP adres veya adreslerimi buluruz. Şöyle yaparız.
Dns.GetHostEntry(Dns.GetHostName())
  .AddressList
  .First(i => i.AddressFamily == AddressFamily.InterNetwork);
GetHostName metodu
Bilgisayarımın adını döner. Örneğin açelya. Şöyle yaparız.
var hostname = Dns.GetHostName();






Hiç yorum yok:

Yorum Gönder