This question already has answers here:
How do you throttle the bandwidth of a socket connection in C?

(3个答案)


已关闭6年。




我有一个用c++编写的服务器应用程序,它将数据发送到套接字(客户端正在读取它)。我需要将“上传速度”限制为该套接字。有没有简单的方法可以做到这一点?我有一个数字,代表kB/s的数量,应该是上传速度。

我在用:
#include <sys/types.h>
#include <sys/socket.h>

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

最佳答案

从开头的到下面的简单方法怎么样?

  • 维护每个目标的发送缓冲区,以累积发送
  • 的字节
  • 设置一个1秒循环计时器
  • 在计时器到期时,对于每个目标
  • ,最多从缓冲区发送指定的字节

    对于更智能的复杂解决方案,需要根据发送历史记录动态计算 sleep 时间。

    10-08 01:15