Zaman zaman kullanılan bilgisayarın ağ zellikleri hakkında bilgi edinilmek istenir. .NET Framework ile System.Net.NetworkInformation’de bu amaçla kullanabileceğiniz sınıflar bulunmaktadır. Bu makalede NetworkInterface sınıfı hakkında bilgi verilmektedir. Bu sınıflardan yararlanmak istediğiniz sınıfın hazırlandığı kod dosyasının üst kısmına aşağıda verilen satırları eklerseniz kod satırlarınız kısaltma imkanı elde edersiniz. Bazı programcılık kitaplarının yazılanlara bakmayın siz using deyimi yalnızca kullanılmak istenen söz konusu sınıf ve arayüzlerin aranacağı namespace’leri işaret etmeye yaramaktadır.
using System.Net;
using System.Net.NetworkInformation;
System.Net.NetworkInformation’de çok sayıda Interface bulunmaktadır. Sistemin ağ ortamı hakkında bilgi edilirken bu namespace’teki NetworkInterface arayüzünden yararlanılmaktadır. Bu nedenle ilk olarak aşağıdaki gibi kod yazarak NetworkInterface arayüzü için değişken tanımlayıp nesne hazırladım.
NetworkInterface[] Arayüz;
Arayüz = NetworkInterface.GetAllNetworkInterfaces();
Bu şekilde NetworkInterface nesnesi hazırladıktan sonra GetEnumerator() metodunu uygulayıp bilgileri bir enum tipine alıp ağ ortamı ile ilgili bilgilere kolayca erişebilirsiniz. Konunun kolay izlenmesini amaçladığım için GetEnumerator() metodundan yararlanıp hemen enum tipi hazırlamayacağım.
Bu nedenle NetworkInterface arayüz nesnesini hazırladıktan sonra NetworkInterfaceType tipinde bir değişken tanımladım. Devamında GetAllNetworkInterface() metodu ile NetworkInterface nesnesine aktardığım bilgilerin ilk satırın NetworkInterfaceType ile ilgili kısmını bu değişkene aktardım.
private void Form1_Click(object sender, EventArgs e)
{
NetworkInterface[] Arayüz;
Arayüz = NetworkInterface.GetAllNetworkInterfaces();
NetworkInterfaceType Network_tipi;
Network_tipi = Arayüz[0].NetworkInterfaceType;
textBox1.Text = Network_tipi.ToString();
}
Bu kod işletildiğinde kullandığınız bilgisayarda Windows’un Ağ Bağlantıları penceresinde listelenen ilk seçenekle ilgili bilgilerden NetworkInterfaceType ilk textBox’a yazılır. Aşağıda verdiğim ekran görüntüsünü bu kodu işlettikten sonra aldım.

Bu örnekte “Arayüz” adını verdiğim NetworkInterface nesnesinin kaç satıra sahip olduğunu öğrenmek istiyorsanız Length özelliğine bakabilirsiniz. Length özelliğinin içeriği Windows’un Ağ Bağlantıları penceresinde listelenen nesnelerin sayısına bağlıdır. Söz konusu ağ nesnesinin diğer özellikleri hakkında bilgi edinmek için forma birkaç TextBox daha yerleştirip yukarıda verdiğim koda eklemeler yaptım.
private void Form1_Click(object sender, EventArgs e)
{
NetworkInterface[] Arayüz;
Arayüz = NetworkInterface.GetAllNetworkInterfaces();
textBox1.Text = Arayüz[0].Name;
textBox2.Text = Arayüz[0].Description;
NetworkInterfaceType Network_tipi;
Network_tipi = Arayüz[0].NetworkInterfaceType;
textBox3.Text = Network_tipi.ToString();
PhysicalAddress Mac_Adres;
Mac_Adres = Arayüz[0].GetPhysicalAddress();
textBox4.Text = Mac_Adres.ToString();
double Hiz;
Hiz = Arayüz[0].Speed/1000000;
textBox5.Text = Hiz.ToString() + " Mbps";
}
Bu örnekte Name, Description ve Speed özelliklerinin içeriklerini, NetworkInterfaceType ve GetPhysicalAddress metotlarının geriye gönderdiği bilgileri TextBox’lara aktardım. Bu kodu işletince aşağıdaki gibi sonuç aldım.

Bildiğiniz gibi söz konusu bağlantıya ait Ağ Bağlantısı Durumu diyalog kutusunda gönderilen ve alınan bilgi miktarı işaret edilmektedir. İlgilendiğim ağ bağlantısı ile gönderilen veya alınan bilgi miktarını öğrenmek için aşağıda verdiğim kodu hazırladım.
private void Form1_Click(object sender, EventArgs e)
{
NetworkInterface[] Arayüz;
Arayüz = NetworkInterface.GetAllNetworkInterfaces();
textBox1.Text = Arayüz[0].Name;
IPv4InterfaceStatistics istatistikler;
istatistikler = Arayüz[0].GetIPv4Statistics();
long Giden = istatistikler.BytesSent;
long Gelen = istatistikler.BytesReceived;
textBox2.Text = Giden.ToString() + " Byte";
textBox3.Text = Gelen.ToString() + " Byte";
}
Bu kodda IPv4InterfaceStatistics tipinde bir değişken tanımlayıp GetIPv4Statistics() metodu ile nesne hazırladıktan sonra BytesSent ve BytesReceived özelliklerini okuyup TextBox’lara aktardım. Bu kod işletildiğinde aşağıdaki gibi bir sonuç alınır.

Yukarıdaki sayfalarda Ağ Bağlantısı veya NetworkInterface nesnesinin üç-beş özelliği hakkında bilgi edinildi. Sözü edilebilinecek çok sayıda özellik ve metot olmasına rağmen IP adresi ile ilgili bilgileri okumakla yetineceğim. Bu amçla forma 2 adet ListBox yereştirip ilk olarak aşağıda verdiğim kodu yazdım.
private void Form1_Click(object sender, EventArgs e)
{
NetworkInterface[] Baglantilar;
Baglantilar = NetworkInterface.GetAllNetworkInterfaces();
IEnumerator Enum_tipi = Baglantilar.GetEnumerator();
int i=0;
while (Enum_tipi.MoveNext())
{
i++;
NetworkInterface Baglanti = (NetworkInterface)Enum_tipi.Current;
listBox1.Items.Add(Baglanti.Name);
IPInterfaceProperties IP_ozellikleri = Baglanti.GetIPProperties();
UnicastIPAddressInformationCollection adresler;
adresler = IP_ozellikleri.UnicastAddresses;
if (adresler.Count > 0)
{
foreach (IPAddressInformation adres in adresler)
listBox2.Items.Add(adres.Address.ToString());
}
}
}
Bu kodda önce GetAllNetworkInterfaces() metodu ile NetworkInterface nesnesi hazırladım ve bu nesnedeki bilgileri GetEnumarator metodu ile enum olarak değerlendirdim. Devamında mevcut bağlantıların adını ilk ListBox’a aktardıktan sonra foreach döngüsü ile bu bağlantıların IP adreslerini 2. Listbox’a aktardım.

Yukarıda sistemdeki network kartları hakkında bilgi edinirken Visual Studio ile Windows Forms Application hazırladım. Şimdi konunun anlaşılmasına katkı olması için aynı bilgileri bir de konsol uygulaması ile elde etmeye çalışacağım.
static void Main(string[] args)
{
NetworkInterface[] Baglantilar;
Baglantilar = NetworkInterface.GetAllNetworkInterfaces();
IEnumerator Enum_tipi = Baglantilar.GetEnumerator();
while (Enum_tipi.MoveNext())
{
NetworkInterface Baglanti = (NetworkInterface)Enum_tipi.Current;
Console.WriteLine("Network kartı açıklama {0}", Baglanti.Description);
Console.WriteLine("Network kartı durumu {0}", Baglanti.OperationalStatus);
Console.WriteLine("Network kartı Hızı {0}", (Baglanti.Speed/1000).ToString());
}
}
Kullandığınız bilgisayardaki mevcut IP adreslerini bulmak istiyorsanız IPAdress ve Dns sınıflarından yararlanabilirsiniz. Dns sınıfının GetHostName() metodu sayesinde kullanılan bilgisayarın adı öğrenildikten sonra GetHostEntry() metodu ile adres listesi elde edilmektedir.
private void ip_bul_Click(object sender, EventArgs e)
{
System.Net.IPAddress[] adres;
string host_adi = System.Net.Dns.GetHostName();
adres = System.Net.Dns.GetHostEntry(host_adi).AddressList;
foreach (System.Net.IPAddress adr in adres)
{
listBox1.Items.Add(adr.ToString());
}
}
Visual C# İçin ADO.NET Kitabı: Rakibi Çok Yerini Tutan Yok
Önce şu ADO.NET nedir sorusuna cevap verelim: Visual Basic 3.0’te veritabanı işlemleri yapılırken kullanılan teknolojinin adı DAO yani Database Access Object’i. DAO, Microsoft tarafından geliştirilen JET adlı veritabanı motorunu ve Windows’la gelen ODBC sürücülerini kullanıyordu. Microsoft firması bir süre sonra Visual Basic programcıları ADO’yu yani ActiveX Data Objects’i geliştirdi. 2002 yılında piyasaya verilen ilk .NET Framework sürümüyle birlikte ise ADO.NET programcıların istifadesine sunuldu. .NET Framework’le gelip veritabanı işlemleri yapılırken yararlanılan sınıfların hepsine birden ADO.NET adı verilmektedir.

Bu kitabın hedef okur grubu daha önce C# hakkında az çok bilgi edinmiş olmasına rağmen C# uygulamalarında veritabanı işlemlerini yapmakta zorlananlardır. Bu hedef okur grubu içinde daha önce SQL Server’la hiç ilgilenmemişlerin olabileceğini düşünerek SQL Server hakkında özet bilgi vermeyi denedik. Yani daha önce SQL Server’la hiç çalışmamış hiç uğraşmamış olanlar bile bu kitabı okuduklarında rahatlıkla SQL Server’ı kurup veritabanı hazırlayıp C# uygulaması dahilinde istedikleri veritabanı işlemlerini yapabilir duruma gelirler. Bu kitabı okuyanlar SQL veya Access veritabanlarına bağlanırken sorun yaşamazlar, uygulamalarını dağıtmak için akla karayı seçmezler, yazılanları anlamak için tekrar tekrar okumak zorunda kalmazlar. SQL Server Veritabanları
Access Veritabanları SqlConnection ve OleDbConnection Sınıfları BindingSource ve BindingNavigator Command Nesneleri DataGrid ve DataGridView DataReader ve DataAdapter Sınıfları DataSet ve DataTable Stored Procedure ve Trigger Hazırlamak Blob Alanlar Xml Dosyaları Transaction’lar CLR Destekli Veritabanı İşlemleri Uygulamaları Dağıtmak ClickOnce Teknolojisi Crystal Reports
Bu kitabı aşağıda verilen adresten temin edebilirsiniz.
http://www.hepsiburada.com/visual-c-icin-ado.net-2.-cilt/productDetails.aspx?categoryid=211651&productid=kseckin10852
|