【问题标题】:C#.net sockets upload rateC#.net 套接字上传速率
【发布时间】:2010-09-30 21:06:07
【问题描述】:

我有一个类使用套接字通过网络异步发送和接收数据:

class Client
{
    private Socket mSocket;
    /*
    ...
    */
    public void SendPacket(byte[] data)
    {
        mSocket.BeginSend(data, 0, data.Length, SocketFlags.None, OnSent, null);
    }

    private void OnSent(IAsyncResult ar)
    {
        mSocket.EndSend(ar);
    }
}

我的问题是,如何在发送数据时计算上传速率? .Net 是否有办法指示特定套接字的下载/上传速率?

我正在使用 C# 4.0

【问题讨论】:

  • 没有内置的方法来确定这一点。测量上传或下载一些数据需要多长时间是微不足道的。棘手的部分是在连接停止时保持上传/下载速率最新。
  • 我需要实时监控涨/跌率。测量操作完成的时间对我来说不是很有帮助。

标签: c# .net sockets winsock


【解决方案1】:

提供此类信息是操作系统的工作。启动 Perfmon.exe,选择性能监视器。右键单击图形区域,然后单击添加计数器。查看“网络接口”部分。 Bytes sent/sec 为您提供了一个很好的速率指标。或当前带宽。

这也可以从 C# 中获得,使用 PerformanceCounter 类。选择正确的网络接口可能会很麻烦,请记住,性能监视器可以轻松获取信息。用户通常只对下载进度感兴趣,她几乎无法做些什么来加快下载速度。简单的 ProgressBar 就可以很好地完成这项工作。

【讨论】:

  • 感谢您的回答。我将看看 PerformanceCounter 类。顺便提一下,它是“perfmon.exe”。
  • 好吧,我发现该类在 AppDomain(而不是 AppDoman 中的每个 Socket)上提供全局向下/向上速率。这不是我真正需要的。所以我只会显示一个进度条,作为你的建议。感谢您的帮助!
猜你喜欢
  • 2013-07-26
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 2012-04-29
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多