社区编辑申请
注册/登录
FileZilla 源代码分析1
系统 Linux
FileZilla是一个免费开源的FTP客户端软件,分为客户端版本和服务器版本,具备所有的FTP软件功能。可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户端工具,而FileZilla Server则是一个小巧并且可靠的支持FTP&SFTP的FTP服务器软件。

FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色、直觉的接口。本文就给大家分析下FileZilla的源代码。

  FileZilla是开源的FTP服务器,用C++写的,通过分析它的源代码,可以掌握C++网络编程以及高并发服务器的设计。

  FileZilla是http://sourceforge.net上的项目,主页是http://sourceforge.net/projects/filezilla,我们要研究的版本是:FileZilla Server 0_9_18,其实FileZilla还包括客户端软件。

  下载后安装,安装时选择安装source,即安装了源代码。

  安装完成后,可以直接打开工程自带的FileZilla server.sln,这个是vs 2003.net工程,里面有三个project,

  FZS Interface:这个是FTP服务器的设置以及监控界面

  Service:这个是核心的FTP服务器部分

  GFtp:打不开,不知是干什么用的,老外也会如此马虎? :)

  直接编译是会出错,主要是FileZilla需要依赖两个第三方包:zlib(压缩算法包)以及regexp(正则表达式的包)

  先搞定zlib,下载http://www.winimage.com/zLibDll/zlib123.zip

  解开,生成目录zlib123,用.net 2003打开zlib123\projects\visualc6\zlib.dsw

  打开 生成|配置管理器,设置活动的解决方案配置为:DLL Release,编译生成项目zlib,成功后会在目录Win32_DLL_Release下生成zlib1.lib和zlib1.dll

  然后,regexp用到了boost第三方包,这里面有很多公用的C++组件,下载地址:

  http://internap.dl.sourceforge.net/sourceforge/boost/boost_1_33_1.zip

  解开后,在cmd下,

  ***步:需要编译bjm,这是编译boost的编译器,晕

  cd boost_1_33_1\tools\build\jam_src

  build.bat

  在当前的bin.ntx86目录下,生成了bjam.exe文件。

  第二步:编译boost

  cd boost_1_33_1

  将刚才生成的bjam.exe拷过来

  set VC7_ROOT="C:\Program Files\Microsoft Visual Studio.NET 2003\Vc7"

  bjam "-sTOOLS=vc7" install

  这个步骤需要很久时间,其时我们只用了里面的regexp包,应该可以只编译这个包,但我没细研究。

  编译完成后即在C盘根目录下生成了boost目录,这个目录下面.net工程要用到。

  在.net工程里,工具|选项|项目|VC++目录,添加

  可执行文件:zlib123\projects\visualc6\Win32_DLL_Release

  包含文件:zlib123目录以及c:\Boost\include\boost-1_33_1

  库文件:zlib123\projects\visualc6\Win32_DLL_Release以及c:\Boost\lib

  这时FZS Interface工程应该可以编译成功了,编译完成后会在Debug目录生成FileZilla Server Interface.exe。

  生成Service工程时,需要调整一下工程设置:

  语言设置:打开工程属性页,配置属性|常规,选择字符集为“使用 Unicode 字符集”,否则编译时会出错unicode必须使用;

  链接设置:打开工程属性页,配置属性|链接器,将输入zlib.lib改成zlib1.lib(因为zlib123工程生成的是zlib1.lib)

  下面生成一下,应该可以了。在生成Service工程完成时已经自动安装了"FileZilla Server FTP server"服务,也可以手工安装服务:

  cd FileZilla_Server\Debug

  "FileZilla server.exe" install auto

  可以试一下这个FTP服务器了,运行FileZilla_Server\interface\Debug\FileZilla Server Interface.exe,这是FTP服务器的配置监控程序,试着加几个user,设置home dir,再用FTP客户端连接一下试试,应该可以了。

通过文章完整的描述,大家应该知道了FileZilla 源代码,希望对大家有帮助!

【编辑推荐】

  1. FileZilla简单介绍
  2. FileZilla:免费的服务器软件
  3. FileZilla 3.3.1.0新版升级 修复bug
  4. FileZilla FTP 客户端硬编码的密码索引关键漏洞
  5. FileZilla Server
责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-02-23 15:21:06

FileZilla

2011-02-23 14:39:27

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 14:26:28

FileZilla

2011-03-01 16:01:08

FileZilla

2011-02-23 15:33:42

2011-02-23 14:16:43

2011-02-23 15:11:27

2011-03-01 16:19:27

FileZilla

2011-03-01 16:25:37

FileZilla

2011-03-02 14:36:24

2011-02-23 15:38:27

FileZillaSe

2011-02-23 17:07:47

FileZillaSe

2011-03-02 16:46:35

FileZillaFtpAnywhere

2011-02-23 16:40:12

FileZillaSe

2011-02-23 16:08:51

FileZilla S

2022-03-30 08:23:51

FileZillaLinux开源

2011-03-07 14:08:06

FileZilla配置

2011-02-23 15:59:00

FileZilla

2011-03-07 09:51:12

Filezilla

同话题下的热门内容

NVIDIA 的开源驱动程序对 Linux 意味着什么Ubuntu 最新版震撼发布 !手里的系统瞬间不香了…面向Linux系统的七大优秀白板应用程序如何在 Linux 中使用 fd 命令查找文件Ubuntu 22.04 LTS 中安装经典 GNOME Flashback 指南Linus 发布 Linux Kernel 5.18 稳定版,带来许多新功能GNOME 与 KDE:到底选择哪个 Linux 桌面环境Linux中级—“驱动” 控制硬件必须学会的底层知识

编辑推荐

Linux系统下安装MySQL的步骤详解CentOS与Ubuntu有什么不同?Linux下如何使用minicom USB串口为什么你可能想要略过Ubuntu 17.04?Linux中7个判断文件系统类型的方法
我收藏的内容
点赞
收藏

51CTO技术栈公众号