封裝C風格地ftplib為ftp.c和ftp.h文件:cftplient類(主要成員變量:文件大小、文件修改時間、主要成員函數:get函數(遠程文件名、本地文件名、核對文件時間)、put函數(本地文件名、服務端文件名、核對文件大小))、get函數實現(判斷連接成功、創建本地目錄、生成臨時文件名、獲取遠程文件時間、使用FtpGet函數獲取文件、若設置檢查9時間則暫存上次獲取遠程文件時間并比較再次獲取遠程時間是否一致、若一致則重置文件時間、該臨時文件名為正式文件名、獲取文件大小)、put函數實現(判斷連接成功、生成服務端臨時文件名、記錄本地文件上傳之前時間、ftpput發送文件、獲取本地文件上傳之后地時間、時間不一致說明本地文件在上傳過程中被修改則取消上傳、重命名服務端文件、若需要核對則進一步檢查遠程文件大小是否和本地文件大小一致(上傳到服務端是修改服務端文件操作,操作時間一直在變,無法用時間確認))
FTP客戶端下載文件:設置結構體存儲文件信息、設置四個容器存放結構體變量(容器一:存放之前下載成功的,容器二:服務器上所有文件,容器三:不需要下載的,容器四:本次需要下載的)、main函數中(信號處理、打開日志文件、解析運行參數、增加心跳信息、登錄ftp、進入服務端目標目錄、獲取服務端所有文件名并保存到本地文件中、更新進程心跳、將服務端的文件列表放到容器2中,若是增量下載就將上一次的結果集放入容器1,比較容器1和容器2,得到不變容器3和需要下載的容器4,用不需要下載的容器3覆蓋結果集,若不是增量下載,為了保持都是從容器4中操作下載,將容器2和容器4互換、更新進程心跳、for(每個容器4的內容):構建客戶端和服務端的絕對路徑文件名、下載文件、更新進程心跳、如果增量模式就將容器4下載內容追加到結果集、若是刪除模式就刪除服務端文件、若是備份模式就構建備份文件全路徑名稱、轉移服務端的源文件到備份目錄)
解析xml文件:
文件下載一:loadlistfile函數(清理裝有文件信息結構體的列表、定義文件對象、打開拼接文件、)
文件下載二:
文件下載三: 容器先清空、創建文件對象、