这个问题听起来可能与现有问题重复,我读过Leaky bucket
算法和其他一些算法。
假设我的程序是单线程的,数据如下:
[ downloaded ] [ current buffer (downloading) ] [ un-downloaded ]
如果我在计算出的速度超过阈值时丢弃了一些数据包,我将如何恢复该数据包?数据将以这种方式连续进行。
我该如何丢弃数据包呢?
答案 0 :(得分:0)
使用TCP套接字连接时,您的程序绝不应“丢弃数据包”。您要做的是阻止程序在超过下载速度限制时读取更多数据。
答案 1 :(得分:0)
TCP旨在重新发送未确认的数据包。这是协议的一部分,是漏桶算法的基础。
因此,我能想到丢弃数据包的唯一方法是,如果您使用的库具有在收到数据包后不发送ACK的功能。如果是这种情况,只需在您要保留的所有数据包上发送一个ACK,然后忽略其余数据包,因为它们将在以后重新发送。
虽然说大多数库都不支持这个功能,因为它的级别很低,并且它们在内部处理TCP部分。
如果您让我们知道特定语言(和套接字实现),您希望在某人的速率限制中知道一种更好的限制连接的方法