As a starting point, I would look at the WinSock API. You can find a way to get traffic information based on each process. If you want to see overall network usage, I would use performance monitoring tools. I found this example from a web search :
private static void ShowNetworkTraffic() { 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 < 10; i++) { Console.WriteLine("bytes sent: {0}k\tbytes received: {1}k", performanceCounterSent.NextValue() / 1024, performanceCounterReceived.NextValue() / 1024); Thread.Sleep(500); } }
Phill source share