如何在C#.NET中获得准确的下载/上传速度?

2023-11-27

我想使用 C# .NET 通过网络接口获得准确的下载/上传速度 我知道可以使用以下方法计算GetIPv4Statistics().BytesReceived并使线程休眠一段时间。但它并没有给出我在浏览器中得到的输出。


下面是来自 LINQPad 的一段快速代码。它使用非常简单的移动平均线。它使用“Speedtest.net”显示“准确的速度”。需要记住的是 Kbps 处于bitsHTTP 数据通常会被压缩,因此对于高度可压缩的数据,“下载的字节”会明显更小。另外,不要忘记,现在任何旧进程都可能在互联网上做任何旧事情(没有更严格的防火墙设置)..

我喜欢弗林登伯格的答案(不要改变接受),并且我注意到某些轮询周期会返回与他/她的结论一致的“0”。

使用后果自负。

void Main()
{
    var nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
    // Select desired NIC
    var nic = nics.Single(n => n.Name == "Local Area Connection");
    var reads = Enumerable.Empty<double>();
    var sw = new Stopwatch();
    var lastBr = nic.GetIPv4Statistics().BytesReceived;
    for (var i = 0; i < 1000; i++) {

        sw.Restart();
        Thread.Sleep(100);
        var elapsed = sw.Elapsed.TotalSeconds;
        var br = nic.GetIPv4Statistics().BytesReceived;

        var local = (br - lastBr) / elapsed;
        lastBr = br;

        // Keep last 20, ~2 seconds
        reads = new [] { local }.Concat(reads).Take(20);

        if (i % 10 == 0) { // ~1 second
            var bSec = reads.Sum() / reads.Count();
            var kbs = (bSec * 8) / 1024; 
            Console.WriteLine("Kb/s ~ " + kbs);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在C#.NET中获得准确的下载/上传速度? 的相关文章

  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 如何在 C++ 中为指针“this”赋值

    在函数中 如何分配this一个新的价值 您可以分配对象this点于 this XY 但你不能分配直接值this this XY Error Expression is not assignable
  • 如何使用Entity Framework Code First CTP 5存储图像?

    我只是想弄清楚是否有一种简单的方法可以使用 EF Code First CTP 5 存储和检索二进制 文件 数据 我真的很希望它使用 FILESTREAM 类型 但我真的只是在寻找某种方法让它工作 我总是创建另一个类 例如ProductIm
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 禁止显示“资源名称不是有效标识符”

    我有一个包含 5000 多个资源字符串的项目 几乎所有的标识符中都有句点 我们正在切换到自动生成强类型类 当然 由于周期的原因 我们看到了几千条警告 资源名称 blah 不是有效的标识符 我知道不是 生成器将句点更改为下划线 一切都很好 我
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • 在共享主机上为 32 位 Linux 编译 git

    我需要在廉价的共享主机上设置 Git 客户端 并使用一个不知名的 32 位 Linux 发行版 GCC 不可用 所以我无法在服务器上编译它 我确实有两台其他 64 位 Linux 服务器和一台 OSX 笔记本电脑可供使用 我可以尝试在其上交
  • Gnuplot,如何*跳过*丢失的数据文件?

    根据各种因素 我可能没有 1 个或多个不存在的数据文件 在预定义的 gnuplot 绘图指令中引用 当这种情况我得到 警告 跳过不可读的文件 这会取消其余指令 有什么方法可以让 gnuplot 跳过任何丢失的数据文件并绘制所有现有的数据文件
  • 为什么我收到“错误:无法推送某些参考”?

    我有一个远程 git 存储库和一个我使用的本地存储库 每当我在本地进行任何更改时 我都会将它们推送到远程 然后我有时会在远程文件上执行 git commit 以存储远程文件上的更改 我根本不直接编辑远程存储库 我只是提交更改 我是一名单一开
  • Android堆碎片策略?

    我有一个 OpenGL Android 应用程序 它使用大量内存来设置复杂的场景 这显然会导致严重的堆碎片 即使不存在内存泄漏 也不可能在不因碎片而耗尽内存的情况下销毁和创建应用程序 碎片肯定是问题 而不是泄漏 这会导致一个主要问题 因为
  • python 3.x ImportError:没有名为“cStringIO”的模块

    我该如何解决ImportError No module named cStringIO 在Python 3 x下 来自 Python 3 0 变更日志 StringIO 和 cStringIO 模块消失了 相反 导入 io 模块并分别使用
  • 如何在嵌套 Backbone 集合上“冒泡”事件?

    我有一个 Backbone 应用程序使用嵌套集合 至少我认为他们是这样称呼的 在我的具体情况下有tabs and subtabs 每个选项卡 模型 包含子选项卡 模型 的集合 对于那些更熟悉代码的人 我将在下面写下我的模型和集合 以及子选项
  • 在 OS X Mavericks 中从 C++ 链接 C

    转换到 OS X Mavericks 和 XCode 5 0 1 后 我无法再将已编译的 C 文件 从 gcc 输出 正常链接到 C 项目 从 g 输出 从我的 makefile 生成的有问题的命令对是 gcc pkg config cfl
  • Bootstrap 3 像 Facebook 一样的 Canvas 侧边栏菜单

    我正在使用 Bootstrap 3 的一些示例作为移动设备上的画布外侧边栏菜单 如下所示 http jsfiddle net AllenDB 9aAjJ 我将如何调整画布外菜单 使其像 Facebook 的搜索 朋友在线画布外菜单一样 始终
  • 用于任意大数的 BCD 数学库?

    我正在寻找库存 Delphi Data FmtBcd 库的替代品 因为我刚刚达到了它的限制 例如它可以表示的最大十进制数字 并且程序以以下方式终止EBcd 溢出异常 出于好奇 我正在计算算术系列成员 并且需要处理非常大的数字 数十万个位置并
  • 浏览器什么时候开始渲染部分传输的 HTML?

    我有一个长期运行的报告 并希望在生成报告时向用户显示一个等待旋转器 我已经完成了这项工作 但不确定我是否以最好或正确的方式做这件事 这是使用 ColdFusion 但我猜它可以是任何语言 在页面顶部 我有一些 Javascript jQue
  • Java继承字段[重复]

    这个问题在这里已经有答案了 我无法理解以下输出 我不知道为什么输出是 10 我认为该行A a new B 创建B类的新实例 我认为结果应该是20 class A int i 10 class B extends A int i 20 pub
  • 强制重新验证 mvc3 非侵入式远程验证

    这是一个经典的登录流程 用户可以选择 新用户 或 现有用户 如果用户是新用户 则登录框中的名称应根据服务器进行验证 以查看用户名是否唯一 如果是现有用户 则将跳过此检查 因为我们希望用户名已被使用 当然 我在视图模型上添加了一个 Remot
  • Objective-C 中的回合双打

    我有两个数字 格式如下34 123456789 如何将其更改为 34 123 我只想要小数点后 3 位数字 您可以将其打印到小数点后三位 NSString stringWithFormat 3f d 您可以将其近似舍入round d 100
  • 当元素位于视口中时jquery触发函数

    我想在 jquery localscroll 到达文档的某个点 div 时触发一个事件 假设我们从顶部 div 垂直滚动到第三个 div 当它到达那里时 就会触发该操作 jQuery 航点插件http imakewebthings gith
  • Android EPUBLIB 读取/加载内容

    我正在玩http www siegmann nl epublib在安卓上 有人可以解释一下正确的方法吗 阅读 epub HTML 内容 如何在 Android 上显示它 使用 WebView 如何将内容拆分为页面以及 如何搜索内容 Thx
  • 为什么断言只是终止为 iPhone 编译的程序?

    我正在调试一个经过大量断言 处理的 iPhone 应用程序 Xcode Objective C 和设备模拟器 在某些情况下 断言失败只会终止应用程序 而不是像我期望的那样闯入调试器 我通过实现我自己的断言来解决方法 其效果是 define
  • jshell 中 J 和 R 标志的确切含义/用途是什么?

    从帮助信息来看 J
  • Google Recaptcha v3 示例演示

    到目前为止 我一直在使用 Google Recaptcha v2 但现在我想使用最新版本 v3 更新我的 WebApp 是否有人可以为基本表单添加一个完整工作的 Google Recaptcha v3 示例 因为我找不到它的任何工作演示 我
  • 在逻辑删除后恢复 LongListSelector 中的滚动位置

    我正在尝试使用 WP7 Silverlight 工具包中的 LongListSelector 控件 这需要一些工作 但我终于让它与我的应用程序一起工作 不幸的是 我在正确处理逻辑删除过程时遇到了一些麻烦 当应用程序逻辑删除 或用户通过选择列
  • 如何在C#.NET中获得准确的下载/上传速度?

    我想使用 C NET 通过网络接口获得准确的下载 上传速度 我知道可以使用以下方法计算GetIPv4Statistics BytesReceived并使线程休眠一段时间 但它并没有给出我在浏览器中得到的输出 下面是来自 LINQPad 的一