2010-09-30 63 views
1

我有一个使用套接字来发送,并通过网络异步接收数据的类:C#.NET插座上传速率

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

+0

有没有内置的方法来确定这一点。测量上传或下载一些数据需要多长时间是微不足道的。棘手的部分是在连接停止时保持up/download下载速率为最新。 – dtb 2010-09-30 21:14:29

+0

我需要实时监控加/减速率。测量完成操作的时间对我来说不是很有帮助。 – Bobos 2010-09-30 21:24:44

回答

0

它是操作系统的工作提供这种信息的。启动Perfmon.exe,选择性能监视器。右键单击图形区域,然后单击添加计数器。查看“网络接口”部分。每秒发送的字节数为您提供了一个很好的速率指示器。或当前带宽。

这也可以从C#中使用,使用PerformanceCounter类。选择合适的网络接口可能会很麻烦,但请记住,性能监视器可以轻松掌握信息。用户通常只对下载进度有多大感兴趣,她可以做的很少,以使其更快。简单的ProgressBar会很好地完成这项工作。

+0

感谢您的回答。我将看看PerformanceCounter类。只需提一下,它就是“perfmon.exe”。 – Bobos 2010-09-30 21:57:43

+0

好吧,我发现这个类通过AppDomain提供全局下/上速率(而不是AppDoman中的每个Socket)。这不是我真正需要的。所以我会只显示一个进度条,作为你的建议。谢谢你的帮助! – Bobos 2010-10-01 09:17:05