github仓库:https://github.com/brucewayne9064/LinuxCpp_server

iperf是一个用于测量网络性能的工具,它可以测试TCP、UDP和SCTP协议的最大带宽,支持调整各种参数,如时间、缓冲区和窗口大小。它有客户端和服务器端的功能,可以创建数据流来测量两端之间的吞吐量。它是一个跨平台的工具,可以在Windows、Linux、Android、MacOS X等系统上运行。

iperf提供了三种测量模式:normal, tradeoff, dualtest。对于每一种模式,用户都可以通过-P选项指定同时测量的并行线程数。以下是三种模式的简要介绍:

  • normal模式:客户端生成多个说者线程,并行向服务器发送数据。服务器每接收到一个说者的数据,就生成一个听者线程,负责与该说者间的通信。只测量客户端到服务器的带宽。
  • tradeoff模式:首先进行normal模式下的测量过程,然后服务器和客户端互换角色。服务器生成多个说者,同时向客户端发送数据。客户端对应每个说者生成一个听者接收数据并测量参数。这样就可以测量两个方向上的网络参数了。
  • dualtest模式:与tradeoff模式同样可以测量两个方向上的网络参数,与tradeoff模式的不同在于,在dualtest模式下,由服务器到客户端方向上的测量与由客户端到服务器方向上的测量是同时进行的。客户端生成多个说者和多个听者,说者向服务器端发送数据,听者等待接收服务器端的说者发来的数据。服务器端也进行相同的操作。这样,dualtest模式需要的测量时间是tradeoff模式的一半。