Отслеживание интернет-трафика C#

551
24 мая 2017, 03:45

День добрый, друзья! Возможно ли средствами C# вести учёт размера входящих/исходящих пакетов? Сколько я отправил байтов, сколько получил и т.п., используя Wi-Fi. Есть ли у кого примеры?

Answer 1

Попробуйте такой вариант для подсчёта всего трафика:

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

READ ALSO
Как задать координаты объекту при его создании в Canvas?

Как задать координаты объекту при его создании в Canvas?

Проблема следующая: Есть префаб объекта - dummy, есть Canvas а в нем gameobject GameField, который рисует игровое поле, есть массив координат каждой ячейки...

341
Как добавить в ячейку datagrid combobox

Как добавить в ячейку datagrid combobox

Заполняю динамически datagridviewДалее при двойном щелчке по опреленной ячейке в этой же ячейке надо чтоб появлялся combobox

367
Как программно выполнить событие клика DataGridView

Как программно выполнить событие клика DataGridView

У меня такая проблема, мне нужно когда я вхожу на форму программно кликнуть по первой строке DataGridViewКак мне это сделать?

327
Спарсить из xml документа

Спарсить из xml документа

Есть xml, полученный из ExcelРазметка выглядит примерно так, только строк значительно больше и блок Data c "Number" только один:

310