我正在尝试创建一个每秒发送100个呼叫的功能,并且每60秒增加到每秒200个呼叫。代码在
之下for (i = 1; i <= 240; i++) {
for (j = 0; j <= 100; j++) {
send_tcp();
}
sleep(1);
if(i %60 == 0) j=j+200;
else j = j*1;
}
send_tcp()基本上只是打开一个套接字,并将TCP发送到某个地址。问题是,对于j = 100,它每秒都正确发送。但是,当j = 300时,发送300 tcp需要3秒,发送500 tcp请求需要10秒。基本上当j进入数字时,我无法获得j次/秒。
我认为这只是一个逻辑错误,但我无法弄清楚如何发送J调用/秒,无论j是多少......
赞赏任何回复
- 对不起我的英语不好,基本上我需要做一些&#34; send_tcp&#34; /秒。然而,当J变大时,看起来J的&#34; send_tcp&#34;不是/秒,但变成/ 3秒或更长时间..
答案 0 :(得分:2)
是的,存在逻辑错误。您将循环计数器与您想要的迭代次数混淆。这就是你需要做的事情:
int n_calls = 100;
for (i = 1; i <= 240; i++) {
for (j = 0; j < n_calls; j++) {
send_tcp();
}
sleep(1);
if(i %60 == 0) n_calls+=200;
}
答案 1 :(得分:1)
你总是在第二个for
中从0到100循环,这是101次。您更改了J的值,但是当for
启动时,它再次将J
的值设置为0。如果我了解您要执行的操作,则会更改send_tcp
增加时调用i
的次数。然后,您需要将代码更改为:
count_j=100;
for (i = 1; i <= 240; i++) {
for (j = 0; j <= count_j; j++) {
send_tcp();
}
sleep(1);
if(i %60 == 0) count_j+=200;
}
是你想要的吗?