C#

C# Web Sitesinin IP Adresini Öğrenme

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda bir web sitesinin IP adresini bulmayı anlatacağım. Hadi başlayalım !

IP Tanımı ve System.Net Kütüphanesi

Gerek bilgisayarlar gerekse telefonlardan internete girdiğimiz zaman internette gezinebilmek için bir IP adresi almaktayız ve bu IP adresleri o anda sadece bir tane olabiliyor. Yani aynı IP adresine sahip ikinci bir cihaz bulunmuyor. IP adresini bilgisayarlarda modemler, telefonlarda ise baz istasyonu belirliyor. Bağlandığımız web siteleri de bir sunucu yani bilgisayar olduklarından onlarında birer IP adresleri bulunmakta. Biz aslında Google’a girdiğimizde Google sunucularına yani sunucuların IP adreslerine bağlanıyoruz. Bireysel kişilerin IP adresleri bilgisayarlarda modemi her kapatıp açtığında, telefonlarda ise telefonu her kapatıp açtığında değişmekte fakat sunucuların IP adresleri sabittir yani Google ilk açıldığında bir tane IP adresi alındı ve bu IP adresi sunucu değişene kadar aynı kalacaktır. Buna statik IP diyoruz. Web sitelerinini IP adresleri sabit olduğu için ve biz web sitesine girdiğimizde aslında web sitesinin bulunduğu sunucunun IP adresine bağlandığımız için web sitelerin IP adreslerini öğrenebiliyoruz. C#’ta bunu internet işlemleri yapabildiğimiz System.Net kütüphanesi ile yapıyoruz.

IPHostEntry Sınıfı

Bir web sitesinin IP adresini öğrenebilmek için IPHostEntry sınıfını kullanıyoruz ve tabiki bu sınıfı kullanabilmek için yeni bir nesnesini türetmemiz gerekiyor fakat bu sınıfın yeni bir nesnesini constructor metodunu kullanarak değil de Dns sınıfı altındaki static tipte olan GetHostEntry() fonksiyonu ile yapabiliyoruz. Bu fonksiyon string tipte web sitesinin adresini parametre olarak istiyor ve geriye yeni bir IPHostEntry nesnesi döndürüyor. Örneğin kullanıcıdan web sitesinin adresini isteyelim ve buna göre yeni bir IPHostEntry nesnesi türetelim;

Console.Write("Web Site Adresini Giriniz: ");
string website = Console.ReadLine();
IPHostEntry entry = Dns.GetHostEntry(website);

IP Adresi Öğrenme

Yeni bir IPHostEntry sınıfı nesnesi türettik. Şimdi sıra geldi web sitesinin sunucu IP adreslerini tespit etmeye. Web sitesinin bulunduğu sunucunun birden fazla IP adresi olabilir, bu mümkün fakat çok büyük çoğunlukla bir tane olmakta çünkü birden fazla olmasına gerek yok. C# tarafında bu göz önüne alınmış ve IP adresi değilde IP adresi listesi öğrenilebilecek şekilde tasarlanmış. Web sitesinin IP adres listesine az önce oluşturduğumuz entry nesnesi altındaki AddressList propertysi ile ulaşabiliyoruz. Bu property bize IP adreslerinin bulunduğu bir dizi döndürüyor. Sonrasında bu dizi içerisinden ilk elemanı alarak web sitesinin IP adresini alabiliriz demektir. Bize gelen dizi IPAddress nesnelerinden oluşan bir dizi ve dizinin her bir elemanı IPAddress sınıfı nesnesi olduğu için dizi içerisindeki ilk elemanı alıp string tipine dönüştürmemiz gerekiyor. Yani şöyle bir kod yazmamız gerekiyor;

IPAddress[] ipler = entry.AddressList;
string ip = ipler[0].ToString();

Kullanıcıya Bildirme

Son olarak tespit ettiğimiz IP adresini kullanıcıya gösterelim;

Console.WriteLine(website + " IP Adresi: " + ip);

Try-catch İçinde Kullanım ve Tüm Kodlar

Kullanıcı dışarıdan web sitesinin adresini yazacak ya, olmayan bir web sitesi yazdığında yazdığımız bu kod SocketException adında bir hata verecektir, bunu önlemek için yazdığım kodları try-catch bloğu içerisine alalım. try içerisinde az önce yazdığımız kodları, catch içine ise böyle bir web sitesinin olmadığına dair mesaj yazdıralım ve yazımızı tamamlayalım.

try
{
    Console.Write("Web Site Adresini Giriniz: ");
    string website = Console.ReadLine();
    IPHostEntry entry = Dns.GetHostEntry(website);
    IPAddress[] ipler = entry.AddressList;
    string ip = ipler[0].ToString();
    Console.WriteLine(website + " IP Adresi: " + ip);
}
catch
{
    Console.WriteLine("Böyle Bir Web Sitesi Yok !");
}

Tüm C# yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu