Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为发送方实现TCP流量限制? 我将在C++ Windows/Linux下实现多用户的网络视频聊天系统。由于“普通”用户通常通过DSL/电缆连接,因此我喜欢的TCP/IP连接有很强的带宽限制_C++_Tcp_Limit_Traffic - Fatal编程技术网

如何为发送方实现TCP流量限制? 我将在C++ Windows/Linux下实现多用户的网络视频聊天系统。由于“普通”用户通常通过DSL/电缆连接,因此我喜欢的TCP/IP连接有很强的带宽限制

如何为发送方实现TCP流量限制? 我将在C++ Windows/Linux下实现多用户的网络视频聊天系统。由于“普通”用户通常通过DSL/电缆连接,因此我喜欢的TCP/IP连接有很强的带宽限制,c++,tcp,limit,traffic,C++,Tcp,Limit,Traffic,基本思想是在给定发送方带宽限制的情况下,传输尽可能高的帧速率。其他应用程序在后台可能仍然需要internet带宽。在第二步中,摄像机捕获率应自动调整到网络限制,以避免不必要的CPU开销 我拥有的是一个恒定的压缩图像流,缓冲区大小变化很大,必须传输到远程端。假设限制为20kb/s,如何最好地实现该限制?请注意,用户应定义此限制 Thx提前, 求救信号 编辑:问题澄清sry 它是关于如何形成任意TCP/IP连接的流量。 这不是我的用例所建议的如何实现图像速率/质量降低。虽然我没有考虑自动调整图像压缩

基本思想是在给定发送方带宽限制的情况下,传输尽可能高的帧速率。其他应用程序在后台可能仍然需要internet带宽。在第二步中,摄像机捕获率应自动调整到网络限制,以避免不必要的CPU开销

我拥有的是一个恒定的压缩图像流,缓冲区大小变化很大,必须传输到远程端。假设限制为20kb/s,如何最好地实现该限制?请注意,用户应定义此限制

Thx提前, 求救信号

编辑:问题澄清sry

它是关于如何形成任意TCP/IP连接的流量。 这不是我的用例所建议的如何实现图像速率/质量降低。虽然我没有考虑自动调整图像压缩,但是。泰克斯乔恩
有两件事可以减少带宽:

发送更小的图像进行更多压缩 发送更少的图像 当实现一种算法,选择图像大小和数量以满足用户选择的限制时,您必须在简单/稳健算法和性能算法之间取得平衡,该算法最大限度地利用了限制

我尝试的第一种方法是使用在任何时间点使用的带宽的滚动平均值来为算法播种。每隔一段时间,检查一下平均值。如果超出限制,则指示算法根据超出限制的程度按比例减少使用。如果它明显低于您的限制,比如低于90%,请指示算法使用更多

less/more指令可能是一个变量,也可能是int或float,实际上,您的算法在这里有很大的创新空间来决定:

捕获并发送图像的频率 压缩那个图像有多难
您需要至少3帧的缓冲区/队列:

一帧当前正在发送到网络; 下一步发送一个完整的帧; 当前正在从相机复制的一帧。 当网络发送器完成发送帧时,它将要发送的下一帧复制到当前发送插槽。当照相机读取器完成从照相机复制一帧时,它将用复制的帧替换要发送的下一帧。显然,需要在下一帧发送的帧周围进行同步


然后,发送方可以根据需要调整其发送速率。如果它的运行速度比相机慢,它只会丢弃帧。

这个想法是根据网络套接字写入程序的速度,以给定的压缩率自动调整图像的数量。这意味着连接不会影响图像大小/压缩比等。好的,你是对的:调整算法可能会同时影响:图像速率和质量。。。。我可能必须澄清我的问题:我希望TCP套接字编写器能够自行减少流量,即通过暂停发送队列以达到其流量限制。这样,它将对它传输的数据保持透明…@Mayday:好吧,忘了我当时说过任何关于压缩的事情。但是,如果您唯一可以更改的是图像的FPS,那么您将无法获得良好的粒度。特别是当带宽限制很低时!您还可以发送更少的图像,或者发送图像的频率更低。如果将图像填充到队列中的事情不会减慢您的算法速度,则暂停发送队列对您没有好处。这听起来很好!但是如何调节TCP连接的发送速率?@Mayday:通过控制调用send的频率。例如,如果您刚刚发送了一个75kB的帧,并且希望将发送速率限制为20kB/s,则在发送下一帧之前,必须先休眠75/20=3.75秒。