iperf-170源代码分析

iperf-170源代码分析

ID:22583142

大小:534.46 KB

页数:40页

时间:2018-10-30

iperf-170源代码分析_第1页
iperf-170源代码分析_第2页
iperf-170源代码分析_第3页
iperf-170源代码分析_第4页
iperf-170源代码分析_第5页
资源描述:

《iperf-170源代码分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Iperf源代码分析(_)概述前段时间学习Linux网络编程的有关知识,希望看一看这些网络编程的技术在实际的代码中是如何运用的。止巧实验室的项目中使用了幵源网络性能测试软件Iperf,于是便初步分析了Iperf的源代码。现将分析代码的点滴收获写在我的Blog上,希望各位高人多多指教。Iperf是美国伊利诺斯大学(UniversityofIllinois)开发的一•种网络性能测试工具。可以用来测试网络节点间TCP或UDP连接的性能,包括带宽、延时抖动(jitter,适用于UDP)以及误码率(适用于UDP)等。关于Iperf的下载、安装以及详细的使用方

2、法,可以参照http://dast.nlanr.net/Projects/lperf/Iperf是按照Server-Client范▲工作的。在连接的一端使用以下命令肩动Server:iperf-s在连接的W—端启动Client:iperf-c1.1.1.1此处假设Server端的IP地址为1.1.1.1。经过一段测试时间(默认为10秒),在Server端和Client端就会打印出网络连接的各种性能参数。Iperf作为一种功能完备的测试工具,还提供r各种选项,例如是建立TCP连接还是UDP连接、测试吋间、测试应传输的字节总数、测试模式等。而测试模式又

3、分为单向测试(NormalTest)、同时双向测试(DualTest)和交替双向测试(TradeoffTest)。此外,用户可以指定测试的线程数。这些线程各自独立的完成测试,并可报告各自的以及汇总的统计数据。对于Iperf的详细使用方法以及命令行参数的意义,请参照上面的网页。Iperf是用C++语言实现的,对设计中的各种结构和功能单元都按照面向对象的思想进行建模。它主要用到了Unix系统编程中两个主要的部分:Socket网络编程和多线程编程。因此,通过分析Iperf的源代码,我们就可以在实际的例子中学>』面向对象编程,socket网络编程以及多线程

4、编程的技术。同时,Iperf实现的功能比较简单,代码并不复杂,而且功能比较单一。因此,Iperf是我们研宄Unix系统编程技术的一个很好的学习对象。我所分析的是Iperf1.7.0版的源代码。需要说明的是,Iperf的源代码中既包含了对应于Unix的部分,也包含了对应于Windows的部分。这两部分是通过条件编译的预处理语句分别编译的。我仅对Unix部分的代码进行分析。Iperf提供的库在开发Iperf的过程中,开发者把Socket编程和多线程编程中经常用到的一些系统调用封装成对象,屏蔽了底层函数的复杂接口,提供了模块化和面向对象的机制,也为我们提

5、供丫一些非常实用的编程工具,我们可以在实现自己的程序时复用这些类。由于这些类实现的源代码都比较简单,也为我们修改前人的代码实现自己的功能提供了方便。这些类的定义与实现都在源代码文件夹的lib子文件夹下。主要包括以下一些对象:SocketAddr类:封装了Socket接口中的网络地址结构(sockaddrjn等)以及各种地址转换的系统调用(gethostbyname、gethostbyaddr、inet_ntop等);Socket类:封装了socket文件描述#,以及socket、listen、connect等系统调用;Mutex类以及Conditi

6、on类:封装了POSIX标准中的mutex和condition(条件变量)线程同步机制;Thread类:封装了POSIX标准中的多线程机制,提供了一种简单易用的线程模型;Timestamp类:通过Unix系统调用gettimeofday实现了一个吋间戳对象,提供了获得当前时间戳,计算两个时间戳之间的先后关系等方法。此外,在lib文件夹中还包括一些Ipert的实现提供的实用工具函数,包括endian.c文件中的字节序转换函数、gnu_getopt文件中的命令行参数处理函数、snprintf文件中的字符串格式化函数、signal.c文件中的与信号处理有

7、关的函数、string.c文件中的字符处理函数、tcp_window_size.c文件中的TCP窗口人小处理函数等。接下来对lib文件夹中的一些比较重要的类和函数进行说明。Iperf源代码分析(二)Thread类Thread类封装了POSTX标准中的多线程机制,提供了一种简单易用的线程模型。Thread类是Iperf的实现中比较重要的类,使Iperf实现多线程并行操作的核心。Thread类的定义在文件lib/Thread.hpp中,其实现位于lib/Thread.cpp中。viewplaincopyprint?1/**/2classThread{3

8、public:4Thread(void);5virtual〜Thread();66//startorstopathread

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。