FileZillaFTP服务器源码解析:FileZilla是一款免费开源的FTP工具。包括 FileZillaClient 和 FileZillaServer 两个版本。 FileZillaServer只提供windows系统下的版本。我们想将本地网站网页文件上传到网站服务器,或者从服务器下载网页文件,只需要FileZillaClient客户端版本。 FileZillaFTP服务器源码解析
- < typetype="text/javascript"> < srcsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> < typetype="text/javascript">
- < srcsrc="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> WM_FILEZILLA_SERVERMSG:
wParam代表一个大的分类,即是什么消息,lParam是附加信息,根据wParam的不同而不同。
wParam 有以下类型:
- FSM_STATUSMESSAGE:
记录当前活动,并在admin窗口显示活动信息,但记录在日志文件中(需要设置相应选项),打开admin窗口,上半部分显示的内容来自那里.
lParam 携带 t_statusmsg 结构,记录当前活跃用户、ip、时间、消息等。
例子:
- (000001) 2006-7-23 16:03:56 - (not logged in) (127.0.0.1)> USER whg
- (000001) 2006-7-23 16:03:59 - (not logged in) (127.0.0.1)> 331 Password required for whg
- (000001) 2006-7-23 16:04:05 - (not logged in) (127.0.0.1)> PASS *
- (000001) 2006-7-23 16:04:11 - robert (127.0.0.1)> 230 Logged on
- FSM_CONNECTIONDATA:
这是与连接相关的消息,例如新连接、用户已成功登录、用户已注销等。信息发送到admin窗口,并显示在admin窗口下部,即ID、Account、IP等。
lParam 带有一个 t_connop 结构。结构中的成员 op 表示更详细的连接分类。可能的值有:
- USERCONTROL_CONNOP_ADD
新用户已连接(尚未登录)
- USERCONTROL_CONNOP_CHANGEUSER
登录成功
- USERCONTROL_CONNOP_REMOVE
用户退出,或因时间原因被强制退出
- USERCONTROL_CONNOP_TRANSFERINIT
传输开始或结束,即与客户端有数据通信,如开始数据传输,ls命令也会引起数据传输。
- USERCONTROL_CONNOP_TRANSFEROFFSETS
显示传输进度。比如在文件传输过程中c ftp下载文件到本地,需要将当前传输的字节数、传输速度等显示到管理窗口
所有这些信息都将显示在管理窗口的下部。
- FSM_THREADCANQUIT:
这种消息是在系统退出时发出的c ftp下载文件到本地,当系统处理这个消息时,会结束线程
- FSM_SEND:
只要系统发送数据,就会发送此消息,但管理窗口的状态栏显示当前用户发送了多少数据
- FSM_RECV:
系统只要接收到数据就会发送这个消息,但是admin窗口的状态栏会显示当前用户接收了多少数据
可以看出,CServer处理的消息应该只是一些admin或status消息,应该在线程listen和accept处理相应的ftp请求时发出。真正的 FTP 处理不在这里。
[编辑推荐]
FileZillaFTP服务器源码解析(1)FileZillaFTP服务器源码解析(2)FileZillaFTP服务器源码解析(4)FileZillaFTP服务器源码解析(5)