2012-02-20 51 views
0

这个问题听起来像是现有的问题的重复,我读过关于Leaky bucket算法,和其他一些。如何在使用套接字限制下载速度时丢弃数据包?

假设我的程序是单线程的,数据是这样的:如果我放弃了一些数据包时计算出的速度超出了门槛,我应该如何来恢复数据包

[ downloaded ] [ current buffer (downloading) ] [ un-downloaded ]

?数据将以这种方式连续。

我该如何丢弃数据包呢?

回答

0

TCP旨在重新发送未确认的数据包。这是协议的一部分,是漏桶算法的基础。

因为这个原因,我可以考虑开沟数据包的唯一方法是,如果你使用的函数库有一个函数,在收到数据包后不发送ACK。如果是这种情况,只需在所有要保留的数据包上发送ACK,然后忽略其他数据包,因为稍后会再发送该数据包。

话虽如此,大多数库将不支持此功能,因为它是非常低的水平,他们在内部处理TCP部分。

如果你让我们知道了特定的语言(和插座实现)你想速率限制在别人可能知道节流

+0

我使用Qt的网络模块,QNetworkRequest连接的更好方法 – daisy 2012-03-06 09:49:18

0

当使用TCP套接字连接时,程序不应该“丢弃数据包”。如果超出下载速度限制,您想要阻止程序读取更多数据。