День добрый, друзья! Возможно ли средствами C# вести учёт размера входящих/исходящих пакетов? Сколько я отправил байтов, сколько получил и т.п., используя Wi-Fi. Есть ли у кого примеры?
Попробуйте такой вариант для подсчёта всего трафика:
static void Main(string[] args)
{
PerformanceCounterCategory performanceCounterCategory = new PerformanceCounterCategory("Network Interface");
string instance = performanceCounterCategory.GetInstanceNames()[0]; // 1st NIC !
PerformanceCounter performanceCounterSent = new PerformanceCounter("Network Interface", "Bytes Sent/sec", instance);
PerformanceCounter performanceCounterReceived = new PerformanceCounter("Network Interface", "Bytes Received/sec", instance);
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("bytes sent: {0}k\tbytes received: {1}k", performanceCounterSent.NextValue() / 1024, performanceCounterReceived.NextValue() / 1024);
Thread.Sleep(500);
}
}
Рекомендую выводить именно в килобайтах,а не в байтах. Если вы всё же хотите в байтах, то уберите в Console.WriteLine - /1024
Подключить директивы:
using System.Diagnostics;
using System.Threading;
Результат:
Трафик при запуски видео в 720p, к примеру:
Если говорить о методе PerformanceCounterCategory.GetInstanceNames () в целом, то он извлекает список экземпляров объекта производительности, связанный с категорией Network Interface. А если брать в отдельности GetInstanceNames (), то он содержит массив строк, представляющих имена экземпляров объекта производительности, связанных с этой категорией. Проще говоря GetInstanceNames () возвращает имя сети. Подробнее на официальном сайте
[0] у GetInstanceNames() - номер массива Network Interface. [0] является Network Interface'ом по умолчанию. Можно использовать и другие массивы GetInstanceNames(). Проще всего узнать доступные имена Network Interface через отладчик.
К примеру у меня два performanceCounterCategory.GetInstanceNames()[]:
1) Первое (нулевой массив) именуется как 802.11n USB Wireless LAN Card
2) Второе (первый массив) называется как Intel[R] Ethernet Connection I217-V
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости