1

我正在尝试创建一个每秒发送 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 是什么号码......

将不胜感激任何回应

--对不起我的英语不好,基本上我需要做j个“send_tcp”/秒。但是,当 J 变大时,“send_tcp”的 J 数似乎不是 / 秒,而是变成 / 3 秒或更多..

4

2 回答 2

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;

}
于 2012-04-04T14:01:16.400 回答
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;

}

是你想要的吗?

于 2012-04-04T14:02:43.327 回答