我有两个关于使用 sendto() 和 C 套接字编程的实际发送速度的问题。
我做了一些套接字编程,我正在背靠背发送 UDP 数据报,在 for 循环中的每个 sendto 操作之间没有间隔(暂停)。使用clock_gettime()获取经过的时间并计算实际发送速率是否合理?实际影响发送速度的因素是 CPU 的频率,还是我正在使用的网络接口?我的理解是它应该是两者中较慢的一个?并使用clock_gettime(),我可以对这个发送速度有一个相当好的估计吗?假设我们得到这个发送速度并用 S 表示。
假设我通过 100Mbps 以太网网络接口将 UDP 数据报从 PC 发送到路由器。路由器的实际到达率是多少?一种情况,如果 S 大于 100Mbps,那么到达率在 100Mbps 左右,对吧?如果 S 大于 100Mpbs,那么到达率应该是 S,对吧?还是应该仍然是 100Mbps?我有点困惑。
我这样做的原因是我想获得可以连续发送到路由器的UDP数据报的最大突发大小(给定传出链路的一定带宽限制)而不丢弃任何数据报。知道如何做一些测试来得到这个吗?