FileZilla FTP服务器源代码分析:FileZilla是⼀款免费⽽且开源的FTP⼯具。包括FileZilla Client,FileZilla Server两个版本。FileZilla Server只提供了windows系统下的版本,我们要将本地的站页⽂件上传到站服务器,或从服务器下载页⽂件,只需FileZilla Client客户端版本就可以了。FileZilla FTP服务器源代码分析
FileZilla是开源的FTP服务器,⽤C++写的,通过分析它的源代码,可以掌握C++络编程以及⾼并发服务器的设计。FileZilla是sourceforge上的项⽬,我们要研究的版本是:FileZilla Server 0_9_18,其实FileZilla还包括客户端软件。下载后安装,安装时选择安装source,即安装了源代码。
安装完成后,可以直接打开⼯程⾃带的FileZilla server.sln,这个是vs 2003⼯程,⾥⾯有三个project,
免费源码网站下载FZS Interface:这个是FTP服务器的设置以及监控界⾯
Service:这个是核⼼的FTP服务器部分
GFtp:打不开,不知是⼲什么⽤的,⽼外也会如此马虎? :)
直接编译是会出错,主要是FileZilla需要依赖两个第三⽅包:zlib(压缩算法包)以及regexp(正则表达式的包)
先搞定zlib,下载、解开,⽣成⽬录zlib123,⽤。net 2003打开zlib123\projects\visualc6\zlib.dsw
打开⽣成|配置管理器,设置活动的解决⽅案配置为:DLL Release,编译⽣成项⽬zlib,成功后会在⽬录
Win32_DLL_Release下⽣成zlib1.lib和zlib1.dll
然后,regexp⽤到了boost第三⽅包,这⾥⾯有很多公⽤的C++组件。
下载、解开后,在cmd下,
第⼀步:需要编译bjm,这是编译boost的编译器,晕
cd boost_1_33_1\tools\build\jam_src
build.bat
在当前的86⽬录下,⽣成了⽂件。
第⼆步:编译boost
cd boost_1_33_1
将刚才⽣成的拷过来
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 。
⽣成Service⼯程时,需要调整⼀下⼯程设置:
语⾔设置:打开⼯程属性页,配置属性|常规,选择字符集为“使⽤ Unicode 字符集”,否则编译时会出错unicode必须使⽤;
链接设置:打开⼯程属性页,配置属性|链接器,将输⼊zlib.lib改成zlib1.lib(因为zlib123⼯程⽣成的是zlib1.lib)
下⾯⽣成⼀下,应该可以了。在⽣成Service⼯程完成时已经⾃动安装了"FileZilla Server FTP server"服务,也可以⼿⼯安装服务:
cd FileZilla_Server\Debug
"" install auto
可以试⼀下这个FTP服务器了,运⾏FileZilla_Server\interface\Debug\FileZilla ,这是FTP服务器的配置监控程序,试着加⼏个user,设置home dir,再⽤FTP客户端连接⼀下试试,应该可以了。
考试⼤温馨提⽰:本内容来源于络,仅代表作者个⼈观点,与本站⽴场⽆关,仅供您学习交流使⽤。其中可能有部分⽂章经过多次转载⽽造成⽂章内容缺失、错误或⽂章作者不详等问题,请您谅解。如有侵犯您的权利,请,本站会⽴即予以处理
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论