请教比较精确控制SOCKET发送速率的方法

白虹李李 2010-11-01 10:46:05
不是那种每秒多少M的,而是每秒多少条消息的方式来计算
比如每秒5000条消息,消息大小差距不大,需要专门控制?

我现在是用的定时器,不过定时器好像速率很难保证,因为定时器消息也会慢慢排队的

...全文
600 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
码记 2013-04-06
  • 打赏
  • 举报
回复
记下发之前的时间,获取到微秒级别Tb,然后发送数据,获取发送后的时间Ta,两者相减得出发送耗费的时间t=Tb-Ta,然后再跟你的实际控制速率的时间,比如每毫秒发送多少多少,用1毫秒减去t,就得到需要睡眠的时间,然后用select。
chenjiawei007 2010-11-09
  • 打赏
  • 举报
回复
socket发送消息 能保证这点速率吧,
每秒3000条需要均匀时间吗?
定时器的时间并不是很精确的,用sleep比较准确,但是sleep最小单位也是1ms,

http://c.chinaitlab.com/vc/787116.html

此链接中说制作了微秒级的定时器,如果真的可行,那可以满足LZ要求。
zyrr159487 2010-11-08
  • 打赏
  • 举报
回复
按你说的定时器速度难以控制,所以根据当前时间来计算,每次想减后得到结果比如60秒,每次60秒的倍数发送消息
白虹李李 2010-11-03
  • 打赏
  • 举报
回复
怎么比较精确的保证发送速率为每秒3000条消息?
各位用的什么方法?
白虹李李 2010-11-03
  • 打赏
  • 举报
回复
CTime t1 = CTime::GetCurrentTime();
拿到当前时间,然后减去之前的时间,比较下就行了
——————————————————————————
然后呢?我比较了后,就完了?就行了?速率就得到控制了?问题解决了?
请不要怪我小白,的确是新手

拿到当前时间,然后减去之前的时间,比较下。。。然后怎么就控制了发送速率了?

肯定是有什么东西,你们觉得理所当然,所以不用说出口,但我不明白

怎么控制发送速率?????????

我拿到了当前时间,我减去了之前的时间,比较了,这个时候系统就会调用一个“系统功能”自动的帮我控制速率了?肯定是比较后,我需要根据比较的结果做什么吧?我关心的就是我需要做什么。。。我不懂。
我想不会那么简单的。
最关键的地方你们没告诉我,比较下。。。然后没说的部分,后面的才是关键。我光比较了,速率没得到控制。


zyrr159487 2010-11-03
  • 打赏
  • 举报
回复
CTime t1 = CTime::GetCurrentTime();
拿到当前时间,然后减去之前的时间,比较下就行了
白虹李李 2010-11-03
  • 打赏
  • 举报
回复
现在上不了QQ。
今天360和QQ打架。。。。
手机写程序 2010-11-02
  • 打赏
  • 举报
回复
每次发送前取下当前时间,然后自己算吧.不发的话稍sleep下.
Eleven 2010-11-01
  • 打赏
  • 举报
回复
自己定义协议,REQ-ACK
fpig 2010-11-01
  • 打赏
  • 举报
回复
计算收到多少ack

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧