gpt4 book ai didi

c# - 计算带宽

转载 作者:可可西里 更新时间:2023-11-01 02:59:25 25 4
gpt4 key购买 nike

有什么方法可以通过网络计算 exe/应用程序的带宽(发送和接收的数据包)?调查了IPGlobalProperties , 和其他类。

我希望通过单个应用程序发送和接收数据包。我检查了http://netstatagent.com/并且需要类似的东西。

.Net 中有什么可以帮助我的吗?

我的应用程序连接到网络服务以发送和接收一些图像文件。

最佳答案

一种方法是检索 performance counters 的值您的应用程序的“.NET CLR 网络/接收字节”和“.NET CLR 网络/发送字节”:

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;
}

请注意,性能计数器 直到您第一次使用相关网络库时才会创建(您将得到 InvalidOperation : Instance 'XXX' does not exist在指定的类别中)并且您需要插入

<configuration>
<system.net>
<settings>
<performanceCounters enabled="true" />
</settings>
</system.net>
</configuration>

在你的 app.config 中。

完整示例下载 NetworkTraffic.csNetworkTraffic.exe.config .

关于c# - 计算带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com