gpt4 book ai didi

c++ - 如何在 Windows 上用 C++ 以指定速率发送 UDP 数据包?

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:16 26 4
gpt4 key购买 nike

我正在编写一个实现 RFC 2544 网络测试的程序。作为测试的一部分,我必须以指定的速率发送 UDP 数据包。

例如,我应该以 1Gb/s 的速度发送 64 字节的数据包。这意味着我应该每 0.5 微秒发送一次 UDP 数据包。伪代码可以类似于“Sending UDP packets at a specified rate”:

while (true) {
some_sleep (0.5);
Send_UDP();
}

但我担心在 Windows 和 Linux 中没有some_sleep() 函数可以给我 0.5 微秒的分辨率。

是否可以在 C++ 中完成此任务,如果可以,正确的方法是什么?

最佳答案

两种方法:

  • 使用高分辨率计时器(例如 windows QueryPerformanceCounter)通过忙循环实现您自己的 sleep

  • 允许速率略有变化,当您足够快于计算出的速率时,插入 Sleep(1)。使用 timeBeginPeriod 获得 1ms 分辨率。

对于这两种方法,您都不能依赖于准确的 sleep 。您将需要保持总计数器并在领先/落后时调整 sleep 时间。

关于c++ - 如何在 Windows 上用 C++ 以指定速率发送 UDP 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com