【问题标题】:How to Identify Bandwidth rate of TCP Client如何识别 TCP Client 的带宽速率
【发布时间】:2011-02-17 21:51:35
【问题描述】:

我正在从我的 C# 服务器应用程序向客户端发送批量数据。不同的客户端可能有不同数量的可用带宽。例如,一些客户端可能正在使用拨号、宽带等。

低带宽客户端将无法快速获取我的数据,这可能会导致我的服务器应用程序阻塞。

如果未成功接收数据,我将重试向客户端发送 5 次。我需要通过跟踪客户端的带宽速率来限制我的服务器发送的数据。

如何在C#中确定接收客户端的带宽速率?

【问题讨论】:

  • 您可以使用异步线程更新来跟踪上传开始的时间,以更新主窗体上的控件。您需要跟踪上传了多少,还有多少要上传,以及自上传开始以来已经过了多长时间。如果您将上传的数量除以 1024,您可以得到用户上传的 KB/秒的估计值。您也可以在自己的线程中上传文件并将进度报告回主线程。
  • 如何将数据发送回客户端?你也写客户端软件吗?
  • 尝试从服务器解决这个问题是一个非常糟糕的主意。虽然来自客户,但它非常可行
  • @Robaticus:是的。我也有一个客户端软件。某些拨号客户端或低带宽接收客户端会影响良好带宽客户端的数据传输。所以,我想根据客户的能力限制重新发送数据。例如,低带宽仅重发 2 次数据,良好带宽仅重发 5 次。

标签: c# bandwidth


【解决方案1】:

这不是一个很好的方法,因为任何特定客户端的带宽都可能发生巨大变化。

相反,实现一些流量控制(TCP 为您提供了这一点)。可能您唯一需要做的就是为非阻塞 I/O 配置套接字,因此当传输窗口填满而不是阻塞您的线程时,它会给出错误消息。

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多