 <p>As a starting point I'd look at the <a href="http://msdn.microsoft.com/en-us/library/ms740673%28v=vs.85%29.aspx" rel="nofollow">WinSock</a> API. You may find a way of pulling traffic information on a per process basis. If you want to see total network usage, I'd use the Performance Monitoring tools. I found this example from a <a href="http://www.dotnetspider.com/resources/5478-How-Show-Network-Traffic-using-C-dot.aspx" rel="nofollow">web search</a>:</p> <pre><code>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 &lt; 10; i++) { Console.WriteLine("bytes sent: {0}k\tbytes received: {1}k", performanceCounterSent.NextValue() / 1024, performanceCounterReceived.NextValue() / 1024); Thread.Sleep(500); } } </code></pre>