بدست آوردن اطلاعات کارت شبکه ویندوز با سی شارپ
در این مقاله، دو قطعه کد سیشارپ ارائه شده است که به شما کمک میکند این اطلاعات را بدست آورید. در کد اول، تکنیک متریک برای پیدا کردن کارت شبکه اصلی که کاربر ...
در برنامهنویسی شبکه، گاهی نیاز است که اطلاعات مربوط به کارت شبکههای سیستم را استخراج کنیم. این اطلاعات میتواند شامل نام، آدرس IP، آدرس MAC، سرعت، و دیگر جزئیات مربوط به هر کارت شبکه باشد. در این مقاله، دو قطعه کد سیشارپ ارائه شده است که به شما کمک میکند این اطلاعات را بدست آورید. در کد اول، تکنیک متریک برای پیدا کردن کارت شبکه اصلی که کاربر از آن استفاده میکند، استفاده شده است. کد دوم تمامی کارتهای شبکه فعال را لیست میکند.
پیدا کردن کارت شبکه اصلی با استفاده از متریک
در این بخش، کدی را بررسی میکنیم که با استفاده از متریک، کارت شبکه اصلی سیستم را پیدا میکند. متریک یکی از ویژگیهای پروتکلهای شبکه است که نشاندهنده هزینه یا اولویت یک مسیر خاص در شبکه است. در این کد، پایینترین مقدار متریک برای پیدا کردن کارت شبکه اصلی استفاده شده است.
// Programmer : Ebrahim Shafiei (EbraSha)
using System;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
class Program
{
static void Main()
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
NetworkInterface primaryNetworkInterface = null;
int lowestMetric = int.MaxValue;
foreach (NetworkInterface networkInterface in networkInterfaces)
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
var gateway = ipProperties.GatewayAddresses.FirstOrDefault(g => g.Address.AddressFamily == AddressFamily.InterNetwork);
if (gateway != null)
{
// Check the metric of the network interface
int interfaceMetric = ipProperties.GetIPv4Properties().Index;
if (interfaceMetric < lowestMetric)
{
lowestMetric = interfaceMetric;
primaryNetworkInterface = networkInterface;
}
}
}
}
if (primaryNetworkInterface != null)
{
IPInterfaceProperties ipProperties = primaryNetworkInterface.GetIPProperties();
Console.WriteLine("Primary Network Interface Found:");
Console.WriteLine("Name: " + primaryNetworkInterface.Name);
Console.WriteLine("Description: " + primaryNetworkInterface.Description);
Console.WriteLine("IP Address: " + ipProperties.UnicastAddresses.FirstOrDefault(ip => ip.Address.AddressFamily == AddressFamily.InterNetwork)?.Address);
Console.WriteLine("MAC Address: " + primaryNetworkInterface.GetPhysicalAddress());
Console.WriteLine("Speed: " + primaryNetworkInterface.Speed);
Console.WriteLine("Gateway: " + ipProperties.GatewayAddresses.FirstOrDefault(g => g.Address.AddressFamily == AddressFamily.InterNetwork)?.Address);
// Display DNS servers
Console.WriteLine("DNS Servers:");
foreach (IPAddress dns in ipProperties.DnsAddresses)
{
if (dns.AddressFamily == AddressFamily.InterNetwork) // Only IPv4
{
Console.WriteLine(" - " + dns);
}
}
}
else
{
Console.WriteLine("No primary network interface found.");
}
Console.ReadLine();
}
}
در این کد، ابتدا تمامی کارتهای شبکه موجود در سیستم دریافت میشوند و سپس با استفاده از متریک، کارت شبکهای که دارای پایینترین مقدار متریک است، به عنوان کارت شبکه اصلی انتخاب میشود. اطلاعات این کارت شبکه شامل نام، توضیحات، آدرس IP، آدرس MAC، سرعت، و آدرس Gateway به کاربر نمایش داده میشود.
لیست کردن تمامی کارتهای شبکه فعال
در این بخش، کدی ارائه شده است که تمامی کارتهای شبکه فعال در سیستم را لیست میکند. این کد اطلاعات هر کارت شبکه مانند نام، توضیحات، آدرس IP، آدرس MAC، سرعت، و DNS سرورها را نمایش میدهد.
// Programmer : Ebrahim Shafiei (EbraSha)
using System;
using System.Net.NetworkInformation;
using System.Net.Sockets;
class Program
{
static void Main()
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface networkInterface in networkInterfaces)
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
foreach (UnicastIPAddressInformation ip in ipProperties.UnicastAddresses)
{
if (ip.Address.AddressFamily == AddressFamily.InterNetwork) // Only IPv4
{
Console.WriteLine("Name: " + networkInterface.Name);
Console.WriteLine("Description: " + networkInterface.Description);
Console.WriteLine("IP Address: " + ip.Address);
Console.WriteLine("MAC Address: " + networkInterface.GetPhysicalAddress());
Console.WriteLine("Speed: " + networkInterface.Speed);
// DNS Servers
Console.WriteLine("DNS Servers:");
foreach (IPAddress dns in ipProperties.DnsAddresses)
{
if (dns.AddressFamily == AddressFamily.InterNetwork) // Only IPv4
{
Console.WriteLine(" - " + dns);
}
}
Console.WriteLine();
}
}
}
}
}
}
این کد تمامی کارتهای شبکهای که وضعیت عملیاتی آنها "Up" باشد را لیست میکند. برای هر کارت شبکه، اطلاعاتی مانند آدرس IP، آدرس MAC، سرعت، و سرورهای DNS نمایش داده میشود. این کد به ویژه برای برنامههایی که نیاز به مانیتورینگ یا مدیریت شبکه دارند مفید است.
در این مقاله، دو روش برای بدست آوردن اطلاعات کارت شبکههای سیستم با استفاده از سیشارپ معرفی شد. اولین روش به شما امکان میدهد تا کارت شبکه اصلی سیستم را با استفاده از متریک پیدا کنید، و روش دوم تمامی کارتهای شبکه فعال را لیست میکند. این تکنیکها میتوانند در برنامههای مختلفی که نیاز به مانیتورینگ و مدیریت شبکه دارند، استفاده شوند.
دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)