我需要在我的win表单程序中显示与任务管理器中显示的相同的信息。
我也想为远程计算机显示相同的信息。如果我有任何其他系统的ip连接到我的系统,那么我也可以得到相同的信息系统。
发布于 2015-08-12 07:17:33
为了获得关于网络适配器的简单信息,您应该使用NetworkInterface。它为网络接口提供配置和统计信息。
public void EchoNetworkInformation()
{
System.Net.NetworkInformation.NetworkInterface[] nics;
nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
foreach (var nic in nics)
{
if (nic.NetworkInterfaceType != NetworkInterfaceType.Wireless80211 && nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet)
continue;
Console.WriteLine("Adapter name: " + nic.Name);
Console.WriteLine("Link speed: " + nic.Speed);
Console.WriteLine("State: " + nic.OperationalStatus);
var utilization = GetNetworkUtilization(nic.Description);
Console.WriteLine("Network utilization", utilization);
}
}
关于网络使用-它更复杂。它使用以下公式进行网络利用:
%utilization = ((8*(dataSent + dataReceived))/bandwidth*time_in_sec)) * 100
我在计算方面找到了很棒的文章。你可以在这里找到一些有用的信息。
为了减少您的时间,您可以使用此代码来解决此任务。它使用提供性能信息的PerformanceCounter。
/// <summary> Calculate network utilization </summary>
/// <param name="networkCard">Description of network card from NetworkInterface</param>
/// <returns>NetworkUtilization</returns>
public static double GetNetworkUtilization(string networkCard)
{
const int numberOfIterations = 10;
// Condition networkCard;
networkCard = networkCard.Replace("\\", "_");
networkCard = networkCard.Replace("/", "_");
networkCard = networkCard.Replace("(", "[");
networkCard = networkCard.Replace(")", "]");
networkCard = networkCard.Replace("#", "_");
var bandwidthCounter = new PerformanceCounter("Network Interface", "Current Bandwidth", networkCard);
var bandwidth = bandwidthCounter.NextValue();
var dataSentCounter = new PerformanceCounter("Network Interface", "Bytes Sent/sec", networkCard);
var dataReceivedCounter = new PerformanceCounter("Network Interface", "Bytes Received/sec", networkCard);
float sendSum = 0;
float receiveSum = 0;
for (var index = 0; index < numberOfIterations; index++)
{
sendSum += dataSentCounter.NextValue();
receiveSum += dataReceivedCounter.NextValue();
}
var dataSent = sendSum;
var dataReceived = receiveSum;
double utilization = (8 * (dataSent + dataReceived)) / (bandwidth * numberOfIterations) * 100;
return utilization;
}
https://stackoverflow.com/questions/31957943
复制相似问题