Una forma es para recuperar el valor de la performance counters ".NET CLR Redes/Bytes recibido" y " .NET CLR/redes bytes enviados" para su aplicación:
PerformanceCounter bytesSentPerformanceCounter= new PerformanceCounter();
bytesSentPerformanceCounter.CategoryName = ".NET CLR Networking";
bytesSentPerformanceCounter.CounterName = "Bytes Sent";
bytesSentPerformanceCounter.InstanceName = GetInstanceName();
bytesSentPerformanceCounter.ReadOnly = true;
float bytesSent = bytesSentPerformanceCounter.NextValue();
//....
private static string GetInstanceName()
{
// Used Reflector to find the correct formatting:
string assemblyName = GetAssemblyName();
if ((assemblyName == null) || (assemblyName.Length == 0))
{
assemblyName = AppDomain.CurrentDomain.FriendlyName;
}
StringBuilder builder = new StringBuilder(assemblyName);
for (int i = 0; i < builder.Length; i++)
{
switch (builder[i])
{
case '/':
case '\\':
case '#':
builder[i] = '_';
break;
case '(':
builder[i] = '[';
break;
case ')':
builder[i] = ']';
break;
}
}
return string.Format(CultureInfo.CurrentCulture,
"{0}[{1}]",
builder.ToString(),
Process.GetCurrentProcess().Id);
}
private static string GetAssemblyName()
{
string str = null;
Assembly entryAssembly = Assembly.GetEntryAssembly();
if (entryAssembly != null)
{
AssemblyName name = entryAssembly.GetName();
if (name != null)
{
str = name.Name;
}
}
return str;
}
cuenta que el rendimiento contadoresno se crean hasta que la primera vez que se utilizan las bibliotecas de red relevantes (obtendrá InvalidOperation: Instancia 'XXX' no existe yo n la Categoría especificada) y que debe insertar
<configuration>
<system.net>
<settings>
<performanceCounters enabled="true" />
</settings>
</system.net>
</configuration>
en su app.config.
Para obtener una muestra completa, descargue NetworkTraffic.cs y NetworkTraffic.exe.config.
Este código ya no parece funcionar, y da 'nvalidOperation: La instancia 'XXX' no existe en el error de Categoría especificado' cada vez. – TheGateKeeper
Estoy usando Windows 7 y .net 4.0 – TheGateKeeper
"Tenga en cuenta que los contadores de rendimiento no se crean hasta la primera vez que utiliza las bibliotecas de red relevantes" esto debe ser en negrita:). Pasé mucho tiempo tratando de descubrir qué pasa, porque en otras soluciones no fue mencionado. –