2011-02-17 69 views
1

我從我的C#服務器應用程序向客戶端發送批量數據。不同的客戶端可能有不同的可用帶寬。例如,某些客戶端可能正在使用撥號,寬帶等。如何識別TCP客戶端的帶寬率

低帶寬客戶端將無法快速獲取我的數據,這可能會導致我的服務器應用程序阻塞。

如果數據沒有被成功接收,我正在重試發送5次到客戶端。我需要通過跟蹤客戶端的帶寬速率來限制服務器發送的數據。

如何確定在C#中接收客戶端的帶寬速率?

+0

您使用異步線程更新來跟蹤上載何時開始以更新主窗體上的控件。您需要跟蹤上傳了多少,上傳了多少,以及上傳開始以來的時間。如果您將您上傳的數量除以1024,則可以獲得用戶上傳的許多KB /秒的估算值。您也可以在自己的線程中上傳文件並將進度報告回主線程。 – 2011-02-17 13:32:43

回答

3

這不是一個很好的方法,因爲任何特定客戶端的帶寬都可能發生巨大變化。

相反,實施一些流量控制(TCP爲您提供)。可能您唯一需要做的就是配置您的套接字以實現非阻塞I/O,因此當傳輸窗口填充而不是阻塞線程時,它會給出錯誤消息。