PDA

View Full Version : سوال: چگونه می توان سرعت دانلود و آپلود کانکشن های سیستم را بدست آورد؟



ghassemalaei
سه شنبه 10 آذر 1388, 10:30 صبح
با سلام.

در حال نوشتن یک پروژه با C# هستم که در بخش از آن باید سرعت دانلود و آپلود سیستم را به صورت آنلاین (یعنی در هر ثانیه) نمایش بدم.

پس از جستجو در کتابخانه دات نت به کلاس زیر رسیدم :

System.Net.NetworkInformation

اما تو این کلاس قسمت IPGlobalStatistics فقط میشود تعداد پکت های دریافت شده را بدست آورد.

اما چیزی که من می خواهم سرعت همزمان دانلود و آپلود سیستم یا همان کانکشن مورد نظرم ( dial up و Adsl و ... ) است.

حالا نمی دانم چه باید بکنم ؟

ghassemalaei
سه شنبه 17 آذر 1388, 22:59 عصر
اینجا کسی نیست جواب بده.

احتمالآ خودم بعد این مدت باید جوابم رو بنویسم.

AliRezaPro
سه شنبه 17 آذر 1388, 23:56 عصر
بفرمایید،
چطور من پست شما رو ندیدم؟
using System;
using System.Net.NetworkInformation;
using System.Windows.Forms;

namespace InterfaceTrafficWatch
{
/// <summary>
/// Network Interface Traffic Watch
///
/// Free to use under GPL open source license!
/// </summary>
public partial class MainForm : Form
{
/// <summary>
/// Timer Update (every 1 sec)
/// </summary>
private const double timerUpdate = 1000;

/// <summary>
/// Interface Storage
/// </summary>
private NetworkInterface[] nicArr;

/// <summary>
/// Main Timer Object
/// (we could use something more efficient such
/// as interop calls to HighPerformanceTimers)
/// </summary>
private Timer timer;

/// <summary>
/// Constructor
/// </summary>
public MainForm()
{
InitializeComponent();
InitializeNetworkInterface();
InitializeTimer();
}

/// <summary>
/// Initialize all network interfaces on this computer
/// </summary>
private void InitializeNetworkInterface()
{
// Grab all local interfaces to this computer
nicArr = NetworkInterface.GetAllNetworkInterfaces();

// Add each interface name to the combo box
for (int i = 0; i < nicArr.Length; i++)
cmbInterface.Items.Add(nicArr[i].Name);

// Change the initial selection to the first interface
cmbInterface.SelectedIndex = 0;
}

/// <summary>
/// Initialize the Timer
/// </summary>
private void InitializeTimer()
{
timer = new Timer();
timer.Interval = (int)timerUpdate;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}

/// <summary>
/// Update GUI components for the network interfaces
/// </summary>
private void UpdateNetworkInterface()
{
// Grab NetworkInterface object that describes the current interface
NetworkInterface nic = nicArr[cmbInterface.SelectedIndex];

// Grab the stats for that interface
IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();

// Calculate the speed of bytes going in and out
// NOTE: we could use something faster and more reliable than Windows Forms Tiemr
int bytesSentSpeed = (int)(interfaceStats.BytesSent - double.Parse(lblBytesSent.Text)) / 1024;
int bytesReceivedSpeed = (int)(interfaceStats.BytesReceived - double.Parse(lblBytesReceived.Text)) / 1024;

// Update the labels
lblSpeed.Text = nic.Speed.ToString();
lblInterfaceType.Text = nic.NetworkInterfaceType.ToString();
lblSpeed.Text = nic.Speed.ToString();
lblBytesReceived.Text = interfaceStats.BytesReceived.ToString();
lblBytesSent.Text = interfaceStats.BytesSent.ToString();
lblUpload.Text = bytesSentSpeed.ToString() + " KB/s";
lblDownload.Text = bytesReceivedSpeed.ToString() + " KB/s";

}

/// <summary>
/// The Timer event for each Tick (second) to update the UI
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void timer_Tick(object sender, EventArgs e)
{
UpdateNetworkInterface();
}

}
}


اینم پروژه

ghassemalaei
سه شنبه 08 دی 1388, 14:45 عصر
دستت درد نکنه.

یه سوال دارم:

در بخشی از برنامه یک کمبو باکس گذاشتی که network interface هارو نشون میده. مشکلی که هست اینه که برای مثال من 2 کانکشن اینترنت دارم یک adsl و دیگر wireless، این کانکشن ها زمانی به لیست اضافه میشن که وصل به اینترنت باشم یا به اصطلاع از اونها استفاده کنم.

چطور می شود لیستی از کانکشن های اینترنت رو ببینم؟

باز هم تشکر از اینکه زحمت کشیدی.

AliRezaPro
سه شنبه 08 دی 1388, 15:00 عصر
شما این رو ببینید
یک مقاله است که با System.Management و win32 نتورک اینترفیس را بدست آورده است

http://www.codeguru.com/csharp/csharp/cs_network/internetweb/article.php/c6023/

H2K
سه شنبه 08 دی 1388, 16:31 عصر
سلام خسته نباشین،
این رو ببین اگر آن کاری که می‌خوای رو انجام میده سورس رو بهت بدم

http://www.codersengine.com/images/photo/CSharp/conectionactivity.png

misoft.ir
سه شنبه 08 دی 1388, 19:54 عصر
سلام
دوست عزیز اگر لطف کنی بذاری همه استفاده میکنند

ghassemalaei
چهارشنبه 09 دی 1388, 11:31 صبح
سلام خسته نباشین،
این رو ببین اگر آن کاری که می‌خوای رو انجام میده سورس رو بهت بدم

http://www.codersengine.com/images/photo/CSharp/conectionactivity.png

البته این هم خوبه ولی هنوز به من نوع کانکشن رو نشون نمی ده یا حداقل اسامی کانکشن های که دارم.

در ضمن اگر لطف کنی سورسش رو بزاری عالی میشه.

FastCode
چهارشنبه 09 دی 1388, 12:58 عصر
یک gadget اپن سورس برای vista هست که این کار میکنه.
باید تویه کدشو بگردی تا چیزی رو که می خواهی پیدا کنی.
41821
41822
Error 2 برای اینه که ویندوزم خرابه.:ناراحت:
اسمش هست Wired Network Meter

ghassemalaei
پنج شنبه 17 دی 1388, 18:07 عصر
شما این رو ببینید
یک مقاله است که با System.Management و win32 نتورک اینترفیس را بدست آورده است

http://www.codeguru.com/csharp/csharp/cs_network/internetweb/article.php/c6023/

دستت درد نکنه درمورد مقاله بالا.

می تونی مقاله بالا رو خودت یکبار توی vs2008 بنویسی؟ من هرچقدر باهاش ور رفتم یک مشکلی داشت سرآخر.

نمیدونم از com استفاده کرده یا نه که تو سیستم من جواب نداد.

H2K
پنج شنبه 17 دی 1388, 19:16 عصر
دستت درد نکنه درمورد مقاله بالا.

می تونی مقاله بالا رو خودت یکبار توی vs2008 بنویسی؟ من هرچقدر باهاش ور رفتم یک مشکلی داشت سرآخر.

نمیدونم از com استفاده کرده یا نه که تو سیستم من جواب نداد.


سلام ، یه پروژه جدید که باز میکنی‌ کافیه که (Managment) رو تو (References) اد کنی‌ بد آن کلاس رو اد کنی به پروژه همین


System.Management;

ghassemalaei
پنج شنبه 17 دی 1388, 23:23 عصر
این کار رو کردم و بازم جواب نداد.

اگه لطف کنی پروژه رو توی visual studio 2008 باز سازی کنی و آپلود کنی عالی میشه.