udp包发送时如何控制速率?

coolboylmk 2007-08-19 04:28:04
如题,每个udp包长都不能超过1500,所以发送大量数据时需要反复调用send()函数

如果像下面这样
while(1)
{
send(...);
if(...) break;
}
因为发送的太快,接受端来不及接受丢包

如果每次调用send()后都sleep(1),发送1M的数据就要sleep1秒,又感觉太慢了,并且用sleep()似乎不是个好办法,还有其他办法控制发送速率吗?
...全文
843 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolboylmk 2007-08-20
  • 打赏
  • 举报
回复
我发送的就是视频,我不要求可靠性,只是想把效率提高,现在发送的时候cpu占用太高,速率不好控制
vocanicy 2007-08-19
  • 打赏
  • 举报
回复
首先,网络情况是无法预测的;再则,UDP方式无法保证数据传输的可靠性
如果一定要用UDP实现,就必须实现客户端应答。

组播的方式只能适合像视频之类的应用,想保证数据可靠传输,组播方式不适用。
coolboylmk 2007-08-19
  • 打赏
  • 举报
回复
楼上两位朋友,如果是udp广播或者组播,接收端非常多的情况下,根据接受端速度来判断就比较麻烦了,有其他办法吗?
DentistryDoctor 2007-08-19
  • 打赏
  • 举报
回复
根据目标速度来确定发送速度,如果超过发送速度就暂停发送。
yxz_lp 2007-08-19
  • 打赏
  • 举报
回复
自己没有试过,让接受端受到数据后,向发送端发送已接受到数据通知,发送端收到通知后再发送接下来的数据。

18,356

社区成员

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

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