PDA

View Full Version : سوال: حجم دانلود در یک سیستم



amin_sltny
پنج شنبه 05 دی 1392, 12:24 عصر
سلالم من می خوام میزان حجم دانلود شده در یک سیستم را به دست بیارم و ان را کنترل کنم؟ کد اون را بهروش زیر نوشتم و میاد این کار را می کنه که network های یک سیستم را می گیره و sendbyte ها و recivebyte های اون ها را باهم جمع می کنه:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Net;
using System.Configuration;
using System.Threading;
using System.Diagnostics;
using System.Net.NetworkInformation;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine( System.Net.NetworkInformation.NetworkInterface.Get IsNetworkAvailable().ToString());

// System.IO.DriveInfo[] a = System.IO.DriveInfo.GetDrives();
// foreach (var item in a)
// {
// Console.WriteLine(item.TotalFreeSpace.ToString());
// }
long sendbyte = 0;
long recivebyte = 0;
new Thread(new ThreadStart(delegate
{
NetworkInterface[] b = NetworkInterface.GetAllNetworkInterfaces();
while (true)
{
foreach (var item in b)
{
System.Net.NetworkInformation.NetworkInterface a = item;
IPv4InterfaceStatistics interfaceStats = item.GetIPv4Statistics();
sendbyte += interfaceStats.BytesSent;
recivebyte += interfaceStats.BytesReceived;
}
Thread.Sleep(1000);
}
})).Start();
new Thread(new ThreadStart(delegate
{
NetworkInterface[] b = NetworkInterface.GetAllNetworkInterfaces();
while (true)
{
foreach (var item in b)
{
Console.Clear();
Console.WriteLine("SendByte: " + sendbyte / 1024 + "kb");
Console.WriteLine("ReciveByte: " + recivebyte / 1024 + "kb");
}
Thread.Sleep(1000);
}
})).Start();
Console.Read();
}


}
}

اما من اینا نمی خوام آخه به جز حجم دانلود شده در سیستم یک سری data دیگه هم بین خود دستگاه ها (مثلا ASDL و PC( هست که انها راهم جمع می کنه ومن فقط اینترنت را می خوام باید چه کار کنم؟

ممنون

amin_sltny
پنج شنبه 05 دی 1392, 18:49 عصر
بچه ها من خودم این کدرا هم نوشتم می خواستم نظرتون را بدونم و گه درست باشه در اختیار دوستان هم بذارم

private static long bytesReceivedPrev = 0;
private static double CheckBandwidthUsage(DateTime now)
{
if (System.Net.NetworkInformation.NetworkInterface.Ge tIsNetworkAvailable())
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
long bytesReceived = 0;
foreach (NetworkInterface inf in interfaces)
{
if (inf.OperationalStatus == OperationalStatus.Up &&
inf.NetworkInterfaceType != NetworkInterfaceType.Loopback &&
inf.NetworkInterfaceType != NetworkInterfaceType.Tunnel &&
inf.NetworkInterfaceType != NetworkInterfaceType.Unknown && !inf.IsReceiveOnly)
{
bytesReceived += inf.GetIPv4Statistics().BytesReceived;
}
}

if (bytesReceivedPrev == 0)
{
bytesReceivedPrev = bytesReceived;
}
long bytesUsed = bytesReceived - bytesReceivedPrev;
double kBytesUsed = bytesUsed / 1024;
double mBytesUsed = kBytesUsed / 1024;
// if (internetUsage.Count > 20)
// {
// internetUsage.Remove(internetUsage.Keys.First());
// }
// bytesReceivedPrev = bytesReceived;
return kBytesUsed;
}
return bytesReceivedPrev;

}