请教一个实际工作中遇到德问题.
有一个n大小的buffer,往硬件发送的速度是x,
新建一个m大小的buffer,往硬件发送的速度是y,
而且m>n,y>x
要求把n大小的数据,即小的那个buffer,填充到m大小的buffer中,然后已速度y发送,
要求在接收端达到的效果和原来(n大小速度x)的一样.
///////////////////////////
请高手指点!!
问题点数:50、回复次数:10Top
1 楼fflush(stdin)回复于 2006-11-01 23:12:35 得分 0
这个就是网络中关于流量整形的问题,lz可以google一下traffic shaping, leaky bucket algorithm,应该有所帮助Top
2 楼pjie131(★自由★你忘记了吗?)回复于 2006-11-02 13:09:58 得分 0
能否介绍一下算法大意?
我看了介绍,但不太明白.
而且,参考的代码能找到吗?
Top
3 楼pjie131(★自由★你忘记了吗?)回复于 2006-11-02 14:39:50 得分 0
个人感觉这两个都不太合适啊.
就The Leaky Bucket Algorithm而言,是将用户发出的不平滑的数据包流转变成网络中平滑的数据包流.
但,我的输入和输出码流都是平滑的,只是,在输出端码率变大,填充空包,加大发送速率.
我觉得不是一个意思.Top
4 楼tailzhou(尾巴)回复于 2006-11-02 15:29:32 得分 0
把m大小的buffer看成是一个首尾相节的队列
用两指针p1,p2分别指向下一个入队列与出队列的地址;
从小buffer取数据放入p1指向的地址后,p1自增;
将p2指向的数据发送后,p2自增;
当p2==p1时,表示此时没有待发送的数据,发送空数据;
p1与p2的自增量以及判断 p2==p1 还是判断 p2+p2的自增量<p1
需要看具体情况;
lz的需求是不是这样的?
Top
5 楼pjie131(★自由★你忘记了吗?)回复于 2006-11-02 16:06:21 得分 0
to tailzhou(尾巴):
首先,谢谢指导.
大致是这个意思,p1p2自增量应该相等,但关键不是这个队列,
关键是什么时候从小buffer读数据.
其实,这里的n,x和m,y是成比例的.
Top
6 楼fflush(stdin)回复于 2006-11-02 19:50:05 得分 0
在接受端期望通过nx的时间接受到大小为n的数据,那么对于发送端来说(其速度是y),单位时间应该发送nx/y的数据,那么你只需要以nx/y的速率从小buffer读数据就可以了
是这个意思吗?Top
7 楼pjie131(★自由★你忘记了吗?)回复于 2006-11-06 11:24:19 得分 0
是这个意思..
Top
8 楼pjie131(★自由★你忘记了吗?)回复于 2006-11-08 10:02:22 得分 0
搞错了....
在接受端期望通过nx的时间接受到大小为n的数据,那么对于发送端来说(其速度是y),单位时
~~时间是n/x!!
间应该发送nx/y的数据,那么你只需要以nx/y的速率从小buffer读数据就可以了
~~~~对于原来,是x,新的是y ~~~~这个速率还是x,多余的部分是空包填充的
Top
9 楼LiChenYue(卐)(李忱悦)(怎堪蔑拒?鳄泪横流㊣暗恋未遂!独孤求偶)(卐)回复于 2006-11-23 22:26:28 得分 0
学习并蹭点分Top
10 楼pjie131(★自由★你忘记了吗?)回复于 2006-12-05 09:52:51 得分 0
高手帮忙啊。。。Top




