a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 112|回复: 0

[其他] 微软技巧:FileZillaFTP服务器源代码分析

[复制链接]
发表于 2012-8-3 00:11:48 | 显示全部楼层 |阅读模式
FileZilla FTP服务器源代码分析:FileZilla是一款免费而且开源的FTP工具。包括FileZilla Client,FileZilla Server两个版本。FileZilla Server只提供了windows系统下的版本,我们要将本地的网站网页文件上传到网站服务器,或从服务器下载网页文件,只需FileZilla Client客户端版本就可以了。FileZilla FTP服务器源代码分析( k, l9 e' E. i+ u; W' |
    FileZilla是开源的FTP服务器,用C++写的,通过分析它的源代码,可以掌握C++网络编程以及高并发服务器的设计。
' a3 g! n, c# E9 _    FileZilla是http://sourceforge.net上的项目,我们要研究的版本是:FileZilla Server 0_9_18,其实FileZilla还包括客户端软件。2 l4 g& Y4 z( A& b9 _5 s' X$ q
    下载后安装,安装时选择安装source,即安装了源代码。5 B, S1 l* Y% e3 b7 Q" S2 u9 y
    安装完成后,可以直接打开工程自带的FileZilla server.sln,这个是vs 2003.net工程,里面有三个project,
, e7 j0 X; H, ?2 p    FZS Interface:这个是FTP服务器的设置以及监控界面
1 N& Y- t3 d9 U* n7 O# a! ^    Service:这个是核心的FTP服务器部分
9 v5 |% w& U2 d5 q' j! @    GFtp:打不开,不知是干什么用的,老外也会如此马虎? :)
4 |+ [. y$ D" b* q- Y/ V$ I1 K, y    直接编译是会出错,主要是FileZilla需要依赖两个第三方包:zlib(压缩算法包)以及regexp(正则表达式的包)
( |) z( u* w% b( _" w+ J    先搞定zlib,下载、解开,生成目录zlib123,用。net 2003打开zlib123\projects\visualc6\zlib.dsw2 C% l& _. m6 ?+ V6 x, O1 ]5 K( Z
    打开 生成|配置管理器,设置活动的解决方案配置为:DLL Release,编译生成项目zlib,成功后会在目录Win32_DLL_Release下生成zlib1.lib和zlib1.dll
+ K9 Z  e1 e' o  }& R& d: S4 \    然后,regexp用到了boost第三方包,这里面有很多公用的C++组件。
/ b! a2 X. V2 i# R% t    下载、解开后,在cmd下,' [: ~' w3 K( f$ z8 y! x6 f
    第一步:需要编译bjm,这是编译boost的编译器,晕/ z  A' |8 R4 S4 F. n% i, N& H% q
    cd boost_1_33_1\tools\build\jam_src1 Q( o- R1 Q# S$ t" n% c
    build.bat! y1 V# @0 `' z" P! s  b
    在当前的bin.ntx86目录下,生成了bjam.exe文件。
3 G; S6 e+ O+ Q8 ?# a/ o! m    第二步:编译boost
1 @; q4 e1 d( Y3 o8 c5 C1 S& C    cd boost_1_33_1$ J; e) l; D) x2 `0 B
    将刚才生成的bjam.exe拷过来
! ?! b% x) J+ V8 D" w& ^. E) x    set VC7_ROOT="C:\Program Files\Microsoft Visual Studio.NET 2003\Vc7"
* o" p3 B) ~; D: [    bjam "-sTOOLS=vc7" install
) h$ c! S2 B; ]! N6 r0 B1 V    这个步骤需要很久时间,其时我们只用了里面的regexp包,应该可以只编译这个包,但我没细研究。3 H/ R9 j) N& U$ J( J
    编译完成后即在C盘根目录下生成了boost目录,这个目录下面。net工程要用到。) ^; l9 q* `$ w$ o: ?" g6 k, F
    在。net工程里,工具|选项|项目|VC++目录,添加
3 ]' @$ C$ z$ t( e9 }: H    可执行文件:zlib123\projects\visualc6\Win32_DLL_Release0 M. X4 c* Q2 p- U4 b0 S  _( i
    包含文件:zlib123目录以及c:\Boost\include\boost-1_33_1
: R; A2 _7 `" m9 R& ^' p% P; D    库文件:zlib123\projects\visualc6\Win32_DLL_Release以及c:\Boost\lib
' i! [' L/ M  z2 F4 D4 d4 y    这时FZS Interface工程应该可以编译成功了,编译完成后会在Debug目录生成FileZilla Server Interface.exe。
) |/ E% Y3 U, b% X    生成Service工程时,需要调整一下工程设置:
3 J1 R6 u& J$ K. a% p    语言设置:打开工程属性页,配置属性|常规,选择字符集为“使用 Unicode 字符集”,否则编译时会出错unicode必须使用;$ D/ h! p2 }% A* }& A+ S' }9 E
    链接设置:打开工程属性页,配置属性|链接器,将输入zlib.lib改成zlib1.lib(因为zlib123工程生成的是zlib1.lib)
* i8 f  p0 u2 M4 |2 R, N9 }    下面生成一下,应该可以了。在生成Service工程完成时已经自动安装了"FileZilla Server FTP server"服务,也可以手工安装服务:
% S* j% E! w2 r5 I2 f* E- _$ v    cd FileZilla_Server\Debug- S: I" D  @8 M0 o
    "FileZilla server.exe" install auto( @. G7 w* M' H1 W$ I/ e- u9 Z# b
    可以试一下这个FTP服务器了,运行FileZilla_Server\interface\Debug\FileZilla Server Interface.exe,这是FTP服务器的配置监控程序,试着加几个user,设置home dir,再用FTP客户端连接一下试试,应该可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-2 03:11 , Processed in 0.285524 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表