小由说iperf3源码(2)_源码流程

文章目录

  • 1.源码调用关系图
  • 2.流程解析

1.源码调用关系图

小由说iperf3源码(2)_源码流程_第1张图片

2.流程解析

  • main()
    iperf3客户端程序和服务端程序共用一份源码,通过程序启动参数来区分客户端和服务端

  • iperf_new_test()
    生成一个struct iperf_test test对象,test对象用于管理客户端或者服务端的所有测试资源

  • iperf_defaults()
    初始化test对象,设置默认值

  • iperf_parse_arguments()
    解析程序启动参数,并重新赋值test参数

  • run()
    客户端或者服务端启动测速

    • daemon()
      服务端启动守护进程

    • iperf_create_pidfile()
      服务端打开并保存pid文件

    • iperf_run_server()
      服务端启动测速

      • iperf_server_listen()
        服务端创建监听套接字,调用函数:socket(),setsockopt(),bind(),listen()等函数,监听套接字主要是为了创建控制套接子test->ctrl_sck,控制套接字用于客户端和服务端执行控制指令。
      • select()
        用于监控:监听套接字,控制套接字,流(stream)监听套接字,流套接字。
      1. 监听套接字用于监听是否有客户端connect,如果connect成功则创建控制套接字,并创建流监听套接字
      2. 控制套接字用于客户端和服务端通过命令进行通信
      3. 流监听套接字用于创建流套接字
      4. 流套接字用于客户端和服务端进行收发数据测速
    • iperf_reset_test()
      服务端重置test对象

    • iperf_delete_pidfile()
      服务端删除pid文件


    • iperf_run_client()
      客户端启动测速
      • iperf_connect()
        客户端connect服务端,连接成功后会立马发送cookie字符串给服务器
      • select()
        用于监控:控制套接字和流套接字
      1. 控制套接字用于客户端和服务端通过命令进行通信
      2. 流套接字用于客户端和服务端进行收发数据测速
  • iperf_free_test()
    测速完成,客户端或者服务端释放test对象

你可能感兴趣的:(iperf源码分析,网络技术,Linux,网络,linux)