TCP的select模型中如何控制send()的速率?

morebread 2011-02-24 05:45:59
RT,想通过TCP/IP循环发送一buffer,buffer的内容和长度会不断重新随机生成。
现在要控制发送的速率。

初步想法是用一个队列,将生成的数据一个字节一个字节的压入,send的时候再根据速率取出相应字节数的内容。但这个效率太低了,在buffer很大或者速率很大的时候根本不好用。

不知道大家有什么好的想法或现成的办法?
...全文
274 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bing_bing 2011-03-03
  • 打赏
  • 举报
回复
send()的速率本身很难改变,它由一个sendbuffer的大小决定,也取决于当前tcp的实现。
setsockopt(...,SND_BUF,...)

如果你做流控,可以根据流量反馈,调节send的频率。
白虹李李 2011-03-02
  • 打赏
  • 举报
回复
发送速率低的时候好办,设置一个定时器定时send就可以了。
但速率高的时候没办法完全平均的,只能保证一个平均速率
比如每秒1000条,但这1000条不能保证是均匀分配的。可以分成每50ms发送20条数据这样的。
zyyoung 2011-02-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zzz_zou 的回复:]
将生成的数据一个字节一个字节的压入

没必要, 你建立一个内存池, 将所有数据拷贝进去, 然后根据速率来1次取, 取了再移动1次就好
[/Quote]
send频率,可以自己控制
zzz_zou 2011-02-25
  • 打赏
  • 举报
回复
将生成的数据一个字节一个字节的压入

没必要, 你建立一个内存池, 将所有数据拷贝进去, 然后根据速率来1次取, 取了再移动1次就好
smwhotjay 2011-02-25
  • 打赏
  • 举报
回复
send操作都靠自己了. 还控制不了发送速率??
Russell2014 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 smwhotjay 的回复:]
send操作都靠自己了. 还控制不了发送速率??
[/Quote]

同意
fishion 2011-02-24
  • 打赏
  • 举报
回复
QoS?
Yofoo 2011-02-24
  • 打赏
  • 举报
回复
一次多压入些数据试试

18,356

社区成员

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

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