【问题标题】:Restrict socket upload speed in C [duplicate]限制 C 中的套接字上传速度 [重复]
【发布时间】:2014-05-03 16:19:32
【问题描述】:

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

我正在使用:

#include <sys/types.h>
#include <sys/socket.h>

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

【问题讨论】:

  • 如果服务器正在发送,这是下载,而不是上传。我想知道你为什么要这样做。通常,服务器应尽快发送以摆脱客户端及其在服务器上所需的所有资源。网络将根据需要自行限制。
  • 我需要这样做,因为这是学校作业。我设法通过套接字发送文件,但我需要限制服务器向套接字发送数据的速度。

标签: c++ c sockets


【解决方案1】:

开始下面的简单方法怎么样?

  • 为每个目标维护一个发送缓冲区,以累积要发送的字节

  • 设置 1 秒重复计时器

  • 在计时器到期时,为每个目的地发送最多来自缓冲区的指定字节

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

【讨论】:

  • 查看链接的副本。这不是最佳解决方案。
  • 但这也会影响延迟,这在这个家伙项目中可能不是一个选项
  • @JonathonReinhart:同意。这就是为什么我提到它只是一种简单的方法。我将它们加粗,以便读者理解这是基本概念,但对于现实生活中的生产质量应用程序,还需要考虑许多其他因素。
猜你喜欢
  • 2012-05-24
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2011-09-10
  • 1970-01-01
  • 2020-12-13
相关资源
最近更新 更多