首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C程序-创建固定大小的突发

C程序-创建固定大小的突发
EN

Stack Overflow用户
提问于 2014-01-03 08:15:03
回答 1查看 206关注 0票数 0

我试图在C中实现令牌桶算法。但是,我被困在如何创建固定大小的突发,如10 MB,20 MB,100 MB等。

我发送2MB数据的代码

代码语言:javascript
复制
for(i=0;i<2047;i++)
   buffer[i] = 'a' ;         // some char
if(sendto(sock_fd, buffer , 2048, 0, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
            perror("\nmessage sending failed");
else
        printf("message  sent successfully");

我想,我只需要用我们想要的数量来填满缓冲区.这条路对吗??我认为这将占用buffer数组的大量内存?有什么更好更标准的方法吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 12:38:50

如果您正在讨论如何实现特定的数据速率,那么这是一个更复杂的问题。如果您只想发送更多的数据,那么将上面的代码放在一个循环中,并多次执行。(要发送10 do,请执行5次循环)。要将其扩展到多个秒,您可以在循环中添加一个睡眠(1),或者添加其他类型的延迟(可能是纳米睡眠)。

实现数据速率的一个近似方法是使用较小的缓冲区大小,例如几个K,然后计算发送它所需的延迟和循环数。例如,使用32K缓冲区,在2秒内发送200 to,您将循环200 m/32K= 6400次。循环中的延迟最多为2s/6400 = 312500纳秒。当然,由于执行代码所需的时间、通过套接字发送数据包所需的时间、任何网络延迟和数据包丢失等因素,这一点都不太准确。但就您的目的而言,它可能已经足够接近了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20899328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档