axel源码学习(0)程序逻辑

axel简介

axel是一个命令行下的轻量级http/ftp 下载加速工具,支持多线程下载和断点续传,支持从多个镜像下载同一文件。

axel的用法如下:

图 0.1 axel usage

axel 粗读

一、源码阅读准备

首先需要了解axel的用法,实际上参数选项比较少,简单看一下就能明白。在阅读源码的时候有时候需要回过头看一看选项的作用,使得代码更加容易看懂。另外,我建议可以修改一下configure文件的debug选项,这样编译完成之后可以使用gdb进行调试追踪,而且从代码上可以看出,debug版本的axel在使用的时候会输出更多更加详细的信息,这些信息在我们搞清楚流程上有比较大的帮助。

 

二、理清文件组成

axel 是一个非常轻量级的下载工具,代码量比较少,文件组成也相对简单。

 

axel.h  axel.caxel结构体定义和操作,下载的主体部分在这里面实现

conf.h  conf.h故名思议,这是有关配置的文件,至于配置的细节留待以后分析

conn.h  conn.h这也很显然是connection相关

ftp.h  ftp.cftp协议相关的实现

http.h http.chttp协议相关实现

search.h search.c这里的search是指的搜索镜像网站,由选项-S控制(如图 0.1)

tcp.c  tcp.hTCP控制相关实现

text.c下载状态显示相关实现。注意:程序的main函数也在这个文件中!!

 

三、简单流程

理清了文件的组成之后,有的放矢,打开text.c来看看程序的主体流程是怎样的,目前不分析细节,只从main函数中梳理出大致的流程,细节留到后续详细分析。

画了一个流程图:

 

图 0.2 axel main函数流程

老实讲,这个流程非常的不专业,非常的简陋,,但是这也算是一个开头,一点一点地慢慢地深入。在之后的文章中主要从下面几个方面来分析:

这是我暂时想到的几个方面,读源码最主要是要学习别人的编程思想和编程技巧,所以还是必须精读,这个过程下来我想会学到很多东西。axel源码里涉及到的很多技术我都不熟悉,但是我并不打算把这些必要都都学习一遍再来读,而是遇到难题再解决难题。另外,网上有一些别人的经验可以参考(但是不能依赖别人的分析)。源码的分析虽然可能会比较细致(因为有很多东西需要我去学习),但是有些细枝末节的东西还是略去,比如国际化(I18n)的问题等等。

我们首先去了象鼻山,那里景色秀丽神奇,

axel源码学习(0)程序逻辑

相关文章:

你感兴趣的文章:

标签云: