طراحی نظارت بر ترافیک شبکه با زبان سی شارپ
در دنیای متصل امروز، نظارت دقیق بر ترافیک شبکه از اهمیت ویژهای برخوردار است. این مقاله به بررسی و توسعه کلاس NetworkTrafficMonitor در زبان برنامهنویسی سی شا..
طراحی نظارت بر ترافیک شبکه با زبان سی شارپ
در دنیای متصل امروز، نظارت دقیق بر ترافیک شبکه از اهمیت ویژهای برخوردار است. این مقاله به بررسی و توسعه کلاس NetworkTrafficMonitor
در زبان برنامهنویسی سی شارپ میپردازد که به منظور نظارت بر ترافیک شبکه طراحی شده است. این کلاس با استفاده از شاخصهای عملکرد سیستم عامل، ترافیک ارسالی و دریافتی را بر روی هر رابط شبکهای ردیابی میکند و دادههای به دست آمده را در واحد کیلوبایت بر ثانیه محاسبه میکند.
کد کلاس طراحی نظارت بر ترافیک شبکه با زبان سی شارپ
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Abdal.Core
{
public class NetworkTrafficMonitor
{
private List<PerformanceCounter> bytesSentCounters;
private List<PerformanceCounter> bytesReceivedCounters;
public event Action<(float totalSentRate, float totalReceivedRate)> TrafficUpdated;
public NetworkTrafficMonitor()
{
bytesSentCounters = new List<PerformanceCounter>();
bytesReceivedCounters = new List<PerformanceCounter>();
InitializeCounters();
}
private void InitializeCounters()
{
PerformanceCounterCategory category = new PerformanceCounterCategory("Network Interface");
string[] instanceNames = category.GetInstanceNames();
foreach (string name in instanceNames)
{
PerformanceCounter bytesSentCounter = new PerformanceCounter("Network Interface", "Bytes Sent/sec", name);
PerformanceCounter bytesReceivedCounter = new PerformanceCounter("Network Interface", "Bytes Received/sec", name);
bytesSentCounters.Add(bytesSentCounter);
bytesReceivedCounters.Add(bytesReceivedCounter);
}
}
public async Task MonitorNetworkTrafficAsync(CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested)
{
float totalSent = 0;
float totalReceived = 0;
foreach (PerformanceCounter counter in bytesSentCounters)
{
totalSent += counter.NextValue();
}
foreach (PerformanceCounter counter in bytesReceivedCounters)
{
totalReceived += counter.NextValue();
}
totalSent /= 1024;
totalReceived /= 1024;
TrafficUpdated?.Invoke((totalSent, totalReceived));
try
{
// Wait for a second before the next update
await Task.Delay(1000, cancellationToken);
}
catch (TaskCanceledException)
{
break;
}
}
}
}
}
نحوه استفاده از کلاس
public partial class MainWindow : Window
{
private NetworkTrafficMonitor monitor;
private CancellationTokenSource cancellationTokenSource;
public MainWindow()
{
InitializeComponent();
monitor = new NetworkTrafficMonitor();
monitor.TrafficUpdated += UpdateTrafficInfo;
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() => monitor.MonitorNetworkTrafficAsync(cancellationTokenSource.Token));
}
private void UpdateTrafficInfo((float totalSentRate, float totalReceivedRate) trafficData)
{
Dispatcher.Invoke(() =>
{
trafficInfo.Text = $"Total Sent: {trafficData.totalSentRate:N2} KB/s, Total Received: {trafficData.totalReceivedRate:N2} KB/s";
});
}
private void MainWindow_OnClosed(object? sender, EventArgs e)
{
cancellationTokenSource.Cancel();
base.OnClosed(e);
}
}
توجه : trafficInfo یک لیبل است که در فرم قرار دارد .
مقدمه:
نظارت بر ترافیک شبکه به سازمانها امکان میدهد تا به مدیریت بهینه منابع شبکه، تشخیص خطاها و اختلالات احتمالی، و بهبود عملکرد کلی شبکه بپردازند. کلاس NetworkTrafficMonitor
با فراهم آوردن امکانات نظارت بهروز و دقیق، به تحلیلگران شبکه اجازه میدهد تا به طور فعال وضعیت شبکه را تحت نظر داشته باشند.
توسعه کلاس:
کلاس NetworkTrafficMonitor
از دو لیست PerformanceCounter
برای ذخیره شمارندههای بایتهای ارسالی و دریافتی استفاده میکند. این شمارندهها بهطور خاص برای هر رابط شبکهای ایجاد میشوند و از طریق فراخوانی متد InitializeCounters
فعال میشوند. این متد، دسته و نمونههای مرتبط با شاخصهای عملکرد شبکه را بازیابی میکند و برای هر نمونه شمارندههای مربوط به بایتهای ارسالی و دریافتی را تنظیم میکند.
عملکرد آسنکرون:
کلاس NetworkTrafficMonitor
همچنین شامل یک متد آسنکرون MonitorNetworkTrafficAsync
است که به طور مداوم ترافیک شبکه را از طریق شمارندهها پایش میکند. این متد مجموع بایتهای ارسالی و دریافتی را محاسبه کرده، آنها را به کیلوبایت تبدیل میکند و اطلاعات را از طریق یک رویداد به نام TrafficUpdated
به مصرفکنندگان اطلاع رسانی میکند.
نتیجهگیری:
کلاس NetworkTrafficMonitor
نمونهای بارز از چگونگی بهکارگیری ابزارهای مدیریت عملکرد سیستم در توسعه برنامههای کاربردی نظارتی است. با بهرهگیری از این کلاس، توسعهدهندگان و متخصصان IT قادر خواهند بود تا به طور موثر به نظارت و تجزیه و تحلیل ترافیک شبکه بپردازند، که این امر میتواند در بهبود امنیت و کارایی شبکههای کامپیوتری نقش مهمی ایفا کند.
دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)