如何实现流量控制?用Sleep? ( 积分: 50 )

  • 主题发起人 主题发起人 xinux11
  • 开始时间 开始时间
X

xinux11

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟用indy9的Idmappedporttcp做了一个代理服务器程序,现在想实现对每个线程进行流量控制,在网上找了几圈,发现可以在send的时候用sleep来控制,由于小弟对于internet编程不熟,不知道在哪里写这个sleep的程序是在Onconnect中写还是在Onexecute中写?另外如何控制send的时候用sleep控制流量?最好能给一小段代码,谢谢大家了!!!

曾请教过一位前辈,其答曰:“其实关键就是在收发数据的时候延时一下,计算方法:数据大小*8*1000 /限制流量 (bps)”

用程序方法如何实现???万望赐教!
 
请求高人相助~~
 
包装发送函数
procedure LimeSend(ISendThread:TClientThread;var Ibuff,iLen:integer);
在这个函数内做判断
如果发送的总字节数大于预定数那么此发送线程休眠10毫秒
while (TInfo(ISendThread.data).TotData / 8 /1000/TInfo(ISendThread.data).Tottime ) > TInfo(ISendThread.data).LimtData do
Sleep(10);
inc(TInfo(ISendThread.data).TotData,Ilen); //累加本次发送的数据
//把数据发送出去
.Tottime //是数据发送到现在的(秒)
 
To mmzmagic:
我试了下,程序无法正常通过,请问TInfo的定义是什么呢?谢谢~~
 
mmzmagic大侠,求助!!!
 
一个简单结构而已,自己定义就行了。
 
怎么定义呢?
小弟是新手,不了解……
还望解答一下
 
我估计可能是下面的结构:

TInfo= packed record
TotData: Integer;
LimtData: Integer;
Tottime: Integer;
end;
 
都是integer类型的可以吗?
我明天到公司电脑上试试
 
似乎仍然不行:(
 
我估計你沒有完全理 mmzmagic 的意思。
 
接受答案了.
 
后退
顶部