宋新艷
摘要:在Internet傳輸文件的FTP協議及軟件實現,其功能多,實現技術復雜,許多功能用戶很少使用。該文介紹了在win7環(huán)境下應用Java語言開發(fā)的FTP客戶端軟件。軟件在Internet/LAN的環(huán)境下實現了客戶機和服務器之間文件傳輸和操作等功能。軟件實現FTP協議的基本和常用功能并采用可視化界面,用戶使用簡單方便。
關鍵詞:FTP;文件傳輸;上傳;下載
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)09-0110-02
Abstract:FTP protocol and software, used to transmit files, is a complex technique and its many functions have not been developed in Internet. This paper introduced the software of FTP client, which is developed in the environment of win7 and JAVA. The software is carrying out file transmission and file operation between Client and Server in Internet/LAN. Integrated functions of the softwarewere the following:file uploading, file downloading, file browsing at client, file browsing at server and information feedback. The software has visual interfaces and the basic and common functions of FTP protocol.It is easy to use.
Key words:FTP; file transmission; upload, download
文件傳輸協議(FTP)是使用最為普遍的網絡協議之一,由最早的簡單文件傳輸協議(TFTP)發(fā)展而來,經過不斷的修正與完善,已成為網絡間文件傳輸的重要協議。FTP在Internet上用于控制文件的雙向傳輸,可以在網絡中傳輸電子文檔、圖片、聲音、影視及程序等多種類型的文件。市面上FTP軟件一般功能多,實現技術復雜,許多功能用戶很少使用。為了適應公司員工上傳和下載文件需要,在 win7環(huán)境下應JAVA開發(fā)了一套FTP客戶端軟件。該軟件在Inter-net/LAN的環(huán)境中能實現客戶機與服務器之間文件的傳輸和操作的基本功能。
1 FTP相關技術
1.1 FTP工作原理
FTP是網絡上的應用層協議,使用TCP協議傳輸。FTP會話時包含了兩個通道,一個叫控制通道,一個叫數據通道??刂仆ǖ朗呛虵TP服務器進行溝通的通道,連接FTP,發(fā)送FTP指令都是通過控制通道來完成的。數據通道是和FTP服務器進行文件傳輸或者列表的通道。
1.2 FTP的工作方式
FTP的工作方式有PORT模式和PASV模式兩種。
PORT模式:是主動模式,在主動傳輸模式下,由服務器向客戶端發(fā)起一個用于數據傳輸的連接??蛻舳说倪B接端口由服務器端和客戶端通過協商確定。主動傳輸模式下,FTP服務器使用20端口與客戶端的端口進行連接,并傳輸數據,客戶端只是處于接收狀態(tài)。
PASV模式:是被動模式。在被動傳輸模式下,FTP服務器等待客戶與其聯系。由客戶端向服務器發(fā)起一個用于數據傳輸的連接。被動傳輸模式下,FTP服務器打開一個暫態(tài)端口等待客戶端對其進行連接,并傳輸數據,服務器并不參與數據的主動傳輸,只是被動接受。
2 系統(tǒng)設計
2.1總體設計
1)基本功能:界面設計;本機文件資源瀏覽;遠程文件資源瀏覽;與服務器連接時的信息反饋。
2)文件傳輸功能:文件的上傳和下載。
3)擴展功能:傳輸進度顯示;文件瀏覽、文件刪除功能。
2. 2 系統(tǒng)功能設計
文件傳輸模塊是整個系統(tǒng)的核心。此模塊實現FTP客戶端與服務器之間的文件傳送。文件的傳輸包括上傳和下載兩個功能。
本機文件瀏覽模塊的功能是對本機上的文件進行瀏覽。
遠程瀏覽模塊的功能是對服務器上的文件進行瀏覽。
文件操作模塊主要實現文件刪除、打開等功能。
傳輸進度、信息顯示模塊顯示客戶端與服務器之間進行信息交過程的實時情況(連接成功與否、上傳和下載的進度等)。
3 系統(tǒng)實現
3.1登錄模塊
客戶端中使用connectServe方法來實現連接服務器功能,首先是使用FtpClient類的openServer(string server)方法打開遠程FTP服務器,然后使用FtpClient類的login(user, password)方法登錄服務器。登錄遠程FTP服務器有兩種方式,一種是注冊用戶登錄,另一種是以匿名方式登錄。為了安全,本系統(tǒng)使用第一種方式登錄,所以需要擁有該服務器的注冊用戶名和密碼。
為了建立一條與指定主機、指定端口上的FTP服務器的連接,首先定義4個變量,命名為ip(服務器IP地址),username(用戶名),port(端口號),password(密碼),分別用來接收來自數據輸入界面的數據。連接服務器的命令函數:openServer(String host,String username, int port, String password )。然后將接收到的數據發(fā)送至服務器驗證,驗證成功則使用append()方法在信息顯示界面中提示連接成功,失敗則顯示無法連接,并給出錯誤提示。
3.2 本地文件瀏覽模塊
功能是顯示本機的文件目錄。首先用類DefaultTableModel創(chuàng)建一個表格模型,DefaultTableModel是 TableModel 的一個實現,它使用一個 Vector 來存儲單元格的值。表格包括三個數據項:文件名,文件大小,修改日期。通過使用一個二維數組Object[][]來存儲這三個數據。通過方法getCurrentDirectory()獲得當前目錄,再利用listFile()獲取該目錄下的文件,經解析后存入二維數組中。
3.3 遠程文件瀏覽模塊
具體功能是顯示服務器端的文件目錄。當連接服務器,登入成功之后,可以使用FtpClient控件的List()方法來獲取FTP服務器上目錄與文件的詳細內容,包括創(chuàng)建文件日期,文件大小,目錄與文件的名稱等相關信息。在得到文件名后,調用其方法getSystemIcon()就可以獲得相應的文件圖標。由于List()方法執(zhí)行后的結果是TelnetInputStream數據流,本系統(tǒng)通過getFileAll()方法進行解析后把它顯示在表格中。
3.4 上傳模塊和下載模塊
1)文件下載模塊
文件的下載,使用TelnetInputStream流,并使用FTPClient控件的get()方法將流的源頭綁定,然后再在本地用將要下載的文件或者目錄名來新建一個文件或者目錄,并綁定到FileOutputStream流中,執(zhí)行TelnetInputStream流的讀并寫入FileOutputStream流中,就可以完成下載功能。文件下載流程圖如圖1所示。在下載之前程序首先需要判斷瀏覽框中選中的是目錄還是文件。若選中的是文件,則直接調用方法:void downloadFile(String filename, String newfilename);
若選中的是目錄需要使用遞歸的方法下載目錄中的文件或者是子目錄。它調用了三個方法,依次為:void downloadDir(String filename);
void downloadFile_x(String pathname,String filename);
void downloadFile(Stringfilename, String newfilename);
2)文件上傳程序
文件的上傳和文件的下載基本類似,不過使用的是TelnetOutputStream流,并使用FtpClient控件的put方法和流綁定,然后在遠程目錄上新建要上傳的文件或者目錄,將本地文件綁定到FileInputStream流中,執(zhí)行FileInputStream流的讀入并寫入TelnetOutputStream流中即可完成上傳功能,對于目錄的上傳同樣需要遞歸方法來實現。
3.5 傳輸進度、信息顯示模塊
1)傳輸進度
該模塊幫助用戶了解文件傳輸的狀態(tài),使用Timer組件來實現。
Timer函數的構造如下:Timer(int delay,ActionListener);
利用Timer組件根據所給予的dalay時間內周期性地觸發(fā)ActionEvent事件,調用ActionListener接口所定義的actionPerformed()方法,通過計算已傳輸的內容和要傳輸的文件的大小,實現傳輸進度的顯示。start()方法和stop()方法分別用于Timer組件的激活和停止。
2)信息顯示模塊
使用JTextArea類可以創(chuàng)建顯示多行文本的對象,通過方法append()來顯示客戶端與服務器的交互信息,如顯示登入成功與否,顯示來自服務器端的友好信息,以及文件上傳和下載成功與否。
4 結束語
該軟件能夠以帳戶和密碼遠程登入FTP服務器,完成文件的上傳與下載并保證文件的完好。軟件體積小巧、直觀,利用圖形界面操作簡單易懂。
參考文獻:
[1] Douglas E Comer. 用TCP/IP進行網際互聯(第一、二、三卷)[M]. 林遙, 譯. 北京: 機械工業(yè)出版社, 2004.
[2] 張峰. Java程序設計與項目實戰(zhàn)(全程實錄)[M]. 北京: 清華大學出版社, 2011.
[3] 董迎紅, 王薇. Java程序設計案例教程與實訓[M]. 北京: 北京大學出版社, 2011.
[4] 劉德春. FTP上傳控件的實現[J]. 電腦編程技巧與維護, 2011, 19(20): 104-108.