You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#获取任务管理器性能类别的网络收发速度

C# 获取网络接收与发送速度的可行方案

以下是基于.NET原生API的实现方案,无需依赖第三方库,稳定性和兼容性更好:

核心实现代码

using System;
using System.Net.NetworkInformation;
using System.Threading;

class NetworkSpeedMonitor
{
    private static long _prevReceivedBytes = 0;
    private static long _prevSentBytes = 0;

    static void Main(string[] args)
    {
        // 筛选可用网络接口(排除回环、未启用的接口)
        NetworkInterface targetInterface = null;
        foreach (var iface in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (iface.OperationalStatus == OperationalStatus.Up && 
                !iface.NetworkInterfaceType.Equals(NetworkInterfaceType.Loopback))
            {
                targetInterface = iface;
                break;
            }
        }

        if (targetInterface == null)
        {
            Console.WriteLine("未找到可用的活动网络接口");
            return;
        }

        Console.WriteLine($"正在监控: {targetInterface.Name}");
        Console.WriteLine("按任意键停止监控\n");

        // 初始化基准字节数
        var initialStats = targetInterface.GetIPv4Statistics();
        _prevReceivedBytes = initialStats.BytesReceived;
        _prevSentBytes = initialStats.BytesSent;

        // 每秒采样一次计算速度
        while (!Console.KeyAvailable)
        {
            Thread.Sleep(1000);
            CalculateAndShowSpeed(targetInterface);
        }
    }

    private static void CalculateAndShowSpeed(NetworkInterface iface)
    {
        var currentStats = iface.GetIPv4Statistics();
        
        long receivedDiff = currentStats.BytesReceived - _prevReceivedBytes;
        long sentDiff = currentStats.BytesSent - _prevSentBytes;

        // 转换为KB/s(如需MB/s可再除以1024,Mbps则乘以8/1024)
        double receiveSpeed = receivedDiff / 1024.0;
        double sendSpeed = sentDiff / 1024.0;

        Console.WriteLine($"接收速度: {receiveSpeed:F2} KB/s | 发送速度: {sendSpeed:F2} KB/s");

        // 更新基准值
        _prevReceivedBytes = currentStats.BytesReceived;
        _prevSentBytes = currentStats.BytesSent;
    }
}

关键说明

  1. 接口筛选逻辑:自动选取第一个处于启用状态的非回环网络接口,你也可以根据需要修改为指定名称的接口(比如通过iface.Name匹配)。
  2. 速度计算方式:通过间隔1秒采样两次的字节数差值,计算每秒的传输速度,避免单次采样的误差。
  3. 权限要求:仅需普通用户权限即可运行,无需管理员权限(除非监控系统级特殊接口)。

如果之前的第三方方案无法运行,大概率是依赖库版本兼容问题或权限限制,这个原生方案可以规避这些问题。

内容的提问来源于stack exchange,提问作者Emircan Horuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:27:36