gpt4 book ai didi

c++ - 如何在 C 中限制套接字连接的带宽?

转载 作者:行者123 更新时间:2023-11-30 16:38:58 25 4
gpt4 key购买 nike

我正在使用 BSD 套接字编写客户端-服务器应用程序。它需要在后台运行,持续传输数据,但不能占用正常使用的网络接口(interface)带宽。根据接口(interface)的速度,我需要将此连接限制到某个最大传输速率。

以编程方式实现这一目标的最佳方法是什么?

最佳答案

每次传输后持续休眠 1 秒的问题是网络性能会不稳定。

令 BandwidthMaxThreshold 为所需的带宽阈值。

令 TransferRate 为连接的当前传输速率。

然后...

如果您检测到 TransferRate > BandwidthMaxThreshold,则执行 SleepTime = 1 + SleepTime * 1.02(将 sleep 时间增加 2%)

在每次网络操作之前​​或之后执行 sleep (SleepTime)

如果您检测到 TransferRate 远低于 BandwidthMaxThreshold,则可以减少 SleepTime。或者,您可以随着时间的推移逐渐衰减/减少您的 sleep 时间。最终你的 sleep 时间将再次达到 0。

除了增加 2%,您还可以线性增加 TransferRate - BandwidthMaxThreshold 之间的差异。

这个解决方案很好,因为如果用户的网络已经没有你想要的那么高,你将无法 sleep 。

关于c++ - 如何在 C 中限制套接字连接的带宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47260608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com