FileZilla FTP服務器源代碼分析(4)
FileZilla FTP服務器源代碼分析:FileZilla是一款免費而且開源的FTP工具。包括FileZilla Client,FileZilla Server兩個版本。FileZilla Server只提供了windows系統下的版本,我們要將本地的網站網頁文件上傳到網站服務器,或從服務器下載網頁文件,只需FileZilla Client客戶端版本就可以了。FileZilla FTP服務器源代碼分析
- < 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窗口上顯示, 并且記錄到log文件中(需要設置相應選項),打開admin窗口,上半部分顯示的內容就是從里來的。
lParam帶的是t_statusmsg結構, 里面記錄了當前活動的user, ip, time, message等
如:
- (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:
這是跟connection相關的消息,如新建了連接,用戶登錄成功,用戶退出等等。信息發送到admin窗口,顯示在admin窗口的下半部分,即ID、Account、IP等內容。
lParam帶的是t_connop結構, 結構中成員op代表更詳細的connection分類,可能值有:
- USERCONTROL_CONNOP_ADD
有新用戶進行連接(還未登錄)
- USERCONTROL_CONNOP_CHANGEUSER
登錄成功
- USERCONTROL_CONNOP_REMOVE
用戶退出,或者因為time被強行注銷
- USERCONTROL_CONNOP_TRANSFERINIT
傳輸開始或結束, 即與客戶端有數據通訊,如開始傳輸數據,ls命令也會導致數據的傳輸。
- USERCONTROL_CONNOP_TRANSFEROFFSETS
顯示傳輸進度,如在進行文件傳輸的過程中,需要向admin窗口顯示當前的傳輸字節數,傳輸速率等
所有的這些信息都會在admin窗口的下半部分中顯示。
- FSM_THREADCANQUIT:
系統退出時會發出這些消息,系統在處理這個消息時,會結束線程
- FSM_SEND:
系統只要發送了數據,都會發送這個消息,并且在admin窗口的狀態條中顯示當前用戶用發送了多少數據
- FSM_RECV:
系統只要接收到數據,都會發送這個消息,并且在admin窗口的狀態條中顯示當前用戶用收到了多少數據
可見,CServer處理的消息應該只是一些admin或者status消息,這些消息應該在線程listen, accep處理相應的ftp請求時發出。真正的FTP處理并不在這里。
【編輯推薦】