




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于c語言的ftp軟件的設計摘 要文件傳輸協議 (file transfer protocol, ftp),它是目前internet上使用得最廣泛的文件傳送協議。起初,ftp并不是應用于ip網絡上的協議,而是20世紀6080年代美國國防部組建的arpanet網絡中,用于計算機間的文件傳輸的協議。時至今日,ftp仍然保持其可靠性,高速地傳輸文件,它還允許文件遠程存取。這使得用戶可以在某個系統上工作,而將文件存貯在別的系統。為了用戶更方便的使用ftp服務,提供更好的人機交互界面,本課題將使用java以及jbuilder的ftpclient庫,基于client/server的架構方式,編寫一個友善界
2、面的ftp客戶端工具,實現服務器連接、遠程與本地目錄瀏覽、文件上傳和下載等基本ftp工具常用功能。 關鍵詞: ftp;上傳;下載the design and implementation of ftp clientabstractfile transfer protocol (ftp), which is the most widely used protocol for transmission at present. in the beginning, the ftp is not used on the ip network, but used in the united states
3、department of defense network for the computer file transfer agreement in the 1960s to 1980s. today, ftp is maintaining its reliability, high-speed transmission of documents, it also allows remote access to documents, users can manipulate data in other different system, to make users more convenient
4、 use ftp services, have a better man-machine interface, this system will be written by java, jbuilder, and the ftpclient library. basing on client/server structures, to prepare a ftp client tool with a friendly interface, it can login to the server, browse remote and local directory, upload and down
5、load.key words: ftp; upload; download目 錄論文總頁數:20頁 1 引言11.1選題背景11.2 選題目的12 相關基礎技術與開發平臺12.1 java技術12.1.1 java簡介12.1.2 c/s架構簡介22.2 ftp基礎32.3 開發平臺43系統需求分析與總體設計43.1 需求分析43.2 設計思路53.3實現思路54 系統模塊的實現74.1 界面模塊實現74.2 登錄模塊實現84.3 瀏覽程序104.3.1瀏覽服務器端目錄程序104.3.2本地瀏覽程序124.4文件下載和上傳程序134.4.1文件下載程序134.4.2文件上傳程序135 系統測試
6、及問題處理155.1測試環境155.2 測試結果155.2.1登錄模塊測試155.2.2系統兼容性測試165.3 測試總結16結 論17參考文獻18第 15 頁 共 20 頁1 引言1.1選題背景ftp是互聯網上使用最廣泛的文件傳輸協議。在互聯網早期曾占據整個互聯網通信量的三分之一。它主要解決了在不同操作系統下處理文件格式的不兼容性。ftp客戶端應該包含以下功能:登錄,瀏覽目錄,上傳下載。傳統方式需要在dos下輸入命令,對于普通用戶是件極困難的事。但有了ftp客戶端軟件后,只要輕點幾下鼠標即可完成所有操作。它已成為人們不可或缺的軟件之一了。本畢業設計將介紹ftp客戶端系統的設計和開發工作,因此
7、,文章將涵蓋以下三個方面的內容:1.基礎技術知識介紹; 2.文件傳輸系統的詳細需求;3.介紹系統的具體實現;4.對最終系統進行測試。通過這次課題,對整個開發過程有深入的了解,提高實踐能力。ftp將在未來的很長時間里作為主要的文件傳輸協議,使用前景仍然寬廣,功能會更加強大。1.2 選題目的ftp是internet上使用最廣泛、是共享資源的主要途徑之一。ftp服務是以它所使用的文件傳輸協議(file transfer protocol)命名的。它的特點是訪問方便,操作簡單,易于管理。如今internet上有許多的資源都是以ftp的形式提供的,包括各種文檔、軟件工具包等等。選擇此課題作為畢業設計,是
8、希望將平日學習累積的知識用于實踐,開發出該系統的各項功能,使用戶很簡單的就能登錄ftp服務器、上傳下載數據等功能的需求。與此同時,在開發中學會發現解決問題,提高java開發能力,為今后的工作、學習、項目開發累積實踐經驗。所以選擇了java語言來開發實現文件傳輸功能的ftp客戶端。2 相關基礎技術與開發平臺綜合個人平日學習內容和語言掌握的熟練度情況,選用了java作為該系統的編程語言,jbuilder 9作為開發的平臺。系統界面模塊可以使用swing、awt,制作出其gui部分。2.1 java技術2.1.1 java簡介java是sun公司推出的一種編程語言。java語言的設計集中于對象及其接
9、口,它提供了簡單的類機制以及動態的接口模型,高度抽象,采用純面向對象編程的思想和方法。java還帶有很多的擴展的類包(package),在程序中可以輕松調用,簡化程序員的工作。java程序運行的硬件或軟件環境,稱為平臺。java平臺包括2個部分:java虛擬機和java應用程序接口。java api:java應用程序接口,用于java程序的使用和java虛擬機的接口。java虛擬機用于將java字節碼翻譯成特定機器碼。基于硬件的平臺,即java程序運行的特定的硬件環境。圖1 java平臺 2.1.2 c/s架構簡介客戶機/服務器在分布處理過程中,使用基于連接的網絡通信模式。該通信模式首先在客戶
10、機和服務器之間定義一套通信協議,并創建一socket類,利用這個類建立一條可靠的鏈接;然后,客戶機/服務器再在這條鏈接上可靠地傳輸數據。客戶機發出請求,服務器監聽來自客戶機的請求,并為客戶機提供響應服務。這就是典型的“請求-應答”模式。下面是客戶機/服務器的一個典型運作過程: l(1)服務器監聽相應端口的輸入; l(2)客戶機發出一個請求; l(3)服務器接收到此請求; l(4)服務器處理這個請求,并把結果返回給客戶機; (5)上述過程,直至完成一次會話過程。圖2 2層c/s結構圖2.2 ftp基礎文件傳送協議ftp(file transfer protocol)是internet文件傳送的基
11、礎。通過該協議,用戶可以從一個internet主機向另一個internet主機拷貝文件。與大多數internet服務一樣,ftp也是一個客戶機/服務器系統。用戶通過一個支持ftp協議的客戶機程序,連接到在遠程主機上的ftp服務器程序。用戶通過客戶機程序向服務器程序發出命令,服務器程序執行用戶所發出的命令,并將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求服務器向用戶傳送某一個文件的一份拷貝,服務器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。在ftp的使用當中,用戶經常遇到兩個概念:下載(download)和上載(upload)。“
12、下載”文件就是從遠程主機拷貝文件至自己的計算機上;“上載”文件就是將文件從自己的計算機中拷貝至遠程主機上。用internet語言來說,用戶可通過客戶機程序向(從)遠程主機上載(下載)文件。圖3 系統工作簡易流程ftp客戶端設計的原理,ftp使用兩條tcp連接來完成文件傳輸:控制連接與數據連接。控制連接用于傳輸控制,數據連接用于數據輸送。在服務器啟動后,服務器就會在端口21等待客戶的連接請求,有用戶需要傳輸文件時,客戶與服務器的端口21建立一個控制連接,用來傳送客戶的命令和服務器的應答,該連接一直保持到客戶與服務器通信結束為當客戶發出數據傳輸命令時,服務器會主動與客戶建立數據連接,并與其進行數據
13、交換。客戶端用戶并不直接處理控制連接上的ftp命令和ftp響應,而是由兩個協議解釋器進行處理。用戶接口為客戶端用戶提供一定形式的輸入界面,接收用戶的命令,將其轉換成標準的ftp命令,最終將控制連接上的ftp響應轉換成用戶可理解的方式。在客戶與服務器的整個連接期間,控制連接必須保持,而數據連接卻可以根據請求動態地建立和關閉。在最常用的流模式中,文件結束是用數據連接的關閉來表示的,換句話說,每傳輸一個文件或文件列表,系統就會再建立一個新的數據連接。圖4 ftp使用的兩個tcp連接2.3 開發平臺本文件傳輸系統是采用borland公司公司推出的jbuilder作為開發平臺,它是一款優秀的java i
14、de集成開發環境工具,jbuilder 9是目前的較新的版本它比以前的版本更加簡單和直觀,方便上手在這個版本中borland集成目前眾多java開發的優秀技術,如:工程管理、單元測試、代碼審查、撰寫javadoc說明文檔等等,極大的方便了java開發人員的工作。如果用戶既要求易于進行可視化布局,又要求有較大的靈活性,jbuilder就是最好的選擇。3系統需求分析與總體設計3.1 需求分析3.1.1 用戶需求軟件要簡單易上手,能夠匿名或者使用帳號登錄到用戶指定的服務器上,進行訪問和數據的上傳下載。3.1.2 功能需求該系統主要包括以下幾個方面:1.可視化的交互界面模塊;2.登錄服務器模塊;3.瀏
15、覽服務器/本地目錄和文件模塊;4.上傳/下載文件模塊。由這四個模塊構成該系統。3.1.3 性能需求:整個系統操作應當簡便,界面友好,運行穩定,執行速度快。系統本身運行對計算機硬件平臺和操作系統平臺要求適中。3.2 設計思路上傳下載程序主要完成文件的傳輸,是系統的核心模塊。jbuilder9提供的ftp控件已經對其進行了類封裝,因而對用戶而言它是透明的,不必再去編程解釋響應消息等,這就是控件的好處。這樣使用jbuilder9,就節約了大量的開發時間。即使對ftp不是很了解,都可以很快建立起一個ftp客戶端程序來。由于本程序只是ftp客戶端,下面將分別對整個系統的圖形界面、登錄模塊、遠程瀏覽模塊、
16、本地瀏覽模塊、上傳模塊和下載模塊六大模塊的程序實現細節進行詳細介紹。登錄模塊服務器目錄瀏覽模塊上傳模塊本機目錄瀏覽的設計ftp客戶端下載模塊圖5 系統模塊圖3.3實現思路在jbuilder9環境所提供的擴展包中,已經提供了一些網絡類的類庫.ftp.ftpclient.,該類庫主要用于建立ftp連接的類。利用此類的方法,我們可以遠程登錄到ftp服務器,列出該服務器上的目錄,設置傳輸協議,以及傳送文件。ftpclient類涵蓋了幾乎所有ftp的功能,ftpclient的實例變量保存了有關建立代理的各種信息。當然,還有很多此類開源的庫,可以實現ftp的功能。這里我采用了ftpclient作為此次畢業
17、設計的資源。以下是部分ftpclient的常用核心函數說明:ftpclient有三種不同形式的構造函數,此構造函數將創建一ftpclient類,但不建立ftp連接。如下:1. public ftpclient(string hostname,int port)此構造函數利用給出的主機名和端口號建立一條ftp連接。2. public ftpclient(string hostname)此構造函數利用給出的主機名建立一條ftp連接,使用默認端口號。3. ftpclient()一旦建立了類ftpclient,ftp連接可以用openserver方法建立,這個類的方法來打開與ftp服務器的連接。類ft
18、pclient提供了如下兩個可用于打開與ftp服務器之間的連接的方法。1. public void openserver(string hostname)此方法用于建立一條與指定主機上的ftp服務器的連接,使用默認端口號。2. public void openserver(string host,int port)此方法用于建立一條與指定主機、指定端口上的ftp服務器的連接。打開連接之后,接下來的工作是注冊到ftp服務器。這時需要利用下面的方法。此方法利用參數username和password登錄到ftp服務器。public void login(string username,string
19、password)下面是ftpclient類所提供的一些控制命令。public void cd(string remotedirectory)該命令用于把遠程系統上的目錄切換到remotedirectory所指定的目錄。public void cdup():該命令用于把遠程系統上的目錄切換到上一級目錄。public string pwd():該命令可顯示遠程系統上的目錄狀態。public void binary():該命令可把傳輸格式設置為二進制格式。此外,類ftpclient還提供了可用于傳遞并檢索目錄清單和文件的若干方法。這些方法返回的是可供讀或寫的輸入、輸出流。下面是其中一些主要的方法。
20、public telnetinputstream list()返回與遠程機器上當前目錄相對應的輸入流。public telnetinputstream get(string filename)獲取遠程機器上的文件filename,借助telnetinputstream把該文件傳送到本地。public telnetoutputstream put(string filename)以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠程計算機。4 系統模塊的實現4.1 界面模塊實現4.2 登錄模塊實現4.3 瀏覽程序我們利用ftpclient控件可以實現ftp客戶端應用程序的瀏覽功能,
21、瀏覽功能的實現程序由瀏覽服務器端文件和瀏覽本地文件兩部分組成。4.3.1瀏覽服務器端目錄程序當連接登錄成功之后,可使用ftpclient控件的list()方法執行ftp服務器端上的目錄瀏覽(list)功能,以取得ftp服務器默認的目錄內容。一般list方法會列出ftp端目錄與文件的詳細內容,包括創建文件日期,文件大小,目錄與文件的名稱等相關信息。當然,ftp服務器端必須開放目錄讀取的權限,以允許連接登錄及瀏覽目錄,否則,connect方法會執行失敗。而這個方法執行后的結果是telnetinputstream數據流,本系統要把它顯示在一個列表框中,還需要進行分解操作。下面是對列表框進行操作的程序
22、代碼:/清空目錄列表,調用list()方法獲取文件列表。privatevoidreloadlist()stringbufferbuf=newstringbuffer();intch;list1.removeall();/清空目錄列表try/調用list()方法得到目錄表telnetinputstreamt=ftp.list();t.setstickycrlf(true);/分解telnetinputstream數據流while(ch=t.read()=0)if(ch=n)/向列表框添加分解得到的目錄和文件list1.add(getdir(buf.tostring();buf.setlength
23、(0);elsebuf.append(char)ch);/完成后關閉telnetinputstream數據流t.close();catch(ioexceptionex)ex.printstacktrace();/刷新列表框的內容list1.validate();/分解字符串得到目錄和文件名publicstringgetdir(stringpath)stringdirname;intch;/分解字符串得到目錄和文件名intbegin=55;dirname=path.substring(begin).trim();returndirname;4.3.2本地瀏覽程序文件傳輸是一個雙向的過程,它涉及到
24、客戶端和服務器之間數據流傳輸的問題,人們不僅需要把服務器上的文件下載到指定的文件下,本地瀏覽程序通 過jtree1,jbutton5和jfilechooser三種控件實現。jtree1用于顯示當前選擇目錄中的所有文件和目錄,jbutton5和jfilechooser組合在一起用于選擇需要的目錄。其實現的源程序代碼如下:/ 選擇本地文件目錄void jbutton5_actionperformed(actionevent e) jfilechooser jfilech = new jfilechooser();/創建文件對話框jfilech.setfileselectionmode(jfilec
25、h.directories_only);/只選擇目錄int returnval = jfilech.showopendialog(this);/顯示文件對話框if(returnval = jfilechooser.approve_option)file root2 = jfilech.getselectedfile();/得到根目錄文件if(root2.isfile() root2=root2.getparentfile();/如果得到的不是目錄,則使用他的目錄defaultmutabletreenode roottree2 = newdefaultmutabletreenode(root2.
26、getpath();settree(root2.getpath(),roottree2);/遍歷目錄樹model1.setroot(roottree2);/設置模型的根節點model1.reload();/重新構造樹視圖/end ifelsejoptionpane.showmessagedialog(this, 沒有選擇文件);/顯示提示信息。圖8 區分目錄與文件圖9 返回目錄4.4文件下載和上傳程序通過瀏覽程序對ftp服務器和本地文件系統的瀏覽,解決了客戶端和服務器端的文件和目錄選擇的問題,但是文件數據是需要傳送和交換的,下面我們將介紹如何實現文件的下載和上傳等操作過程。 4.4.1文件下載
27、程序當我們想下載文件,可以使用telnetinputstream流,并使用ftpclient控件的get方法將流的源頭綁定,再將telnetinputstream流綁定到datainputstream流中,然后再在本地新建一個文件,并綁定到randomaccessfile流中,執行datainputstream流的讀并寫入randomaccessfile流中,就可以完成下載功能了。當然,程序首先需要判斷本地瀏覽框中選中的是目錄還是文件,或者根本就沒有在本地瀏覽框中選擇。為了可同時選擇多個文件下載,必須先設置list1控件的multiplemode屬性為true,以便能夠在遠程瀏覽框中進行多重選
28、擇。接著在程序中利用list1控件對象的getselecteditems方法獲取所選擇的文件和目錄,并判斷是否為目錄;若是目錄,則在本地創建一個目錄(本實例沒有使用遞歸的方法,所以不能下載目錄中的文件和子目錄),否則,將進行文件下載。一直重復至所有被選擇文件或者目錄都被完成操作為止。在這里,使用了一個isfile的boolean變量用于判斷是否為文件。4.4.2文件上傳程序上傳文件基本上與下載文件類似,不過使用的是telnetoutputstream流,并使用ftpclient控件的put方法和流綁定,再將telnetoutputstream流綁定到dataoutputstream流中,然后在
29、本地新建一個文件,并綁定到randomaccessfile流中,執行randomaccessfile流的讀并寫入dataoutputstream流中,就可以完成上傳功能了。代碼如下:/上傳文件到ftp目錄voidjbutton3_actionperformed(actionevente)/上傳文件到ftp服務器中if(jtree1.isselectionempty()jtextarea1.append(沒有選擇本地文件上載n);elsefilefile1=newfile(conpath();/判斷是否是文件,如果是目錄則不與操作,以后的程序可能會考慮添加目錄的操作if(file1.isfile
30、()stringfilename=jtree1.getselectionpath().getlastpathcomponent().tostring();intch;tryfilelocalfile=newfile(conpath();randomaccessfilesendfile=newrandomaccessfile(conpath(),r);/上傳文件到ftp服務器中sendfile.seek(0);telnetoutputstreamouts=ftp.put(filename);dataoutputstreamoutputs=newdataoutputstream(outs);/上傳
31、處理while(sendfile.getfilepointer()sendfile.length()ch=sendfile.read();outputs.write(ch);/上傳完成,關閉輸入輸出流outs.close();sendfile.close();catch(ioexceptionex)ex.printstacktrace();/列表框需要重新刷新reloadlist();圖10 上傳與下載5 系統測試及問題處理5.1測試環境系統測試機器: cpu: amd athlon 2500+mainboard: epox 8rda3+memory: kingston ddr 768mhar
32、ddisk: westdigital 120jb程序測試環境:windows xp sp2windows server 2003jbuilder 9jre 1.4serv-u v5.2 測試結果在本地系統安裝ftp服務器端軟件serv-u,用于提供ftp服務,ip地址,端口號使用默認端口21。創建ftp登錄帳號,分配適當的權限。(serv-u的安裝和配置過程略過,可見該軟件幫助文件。)5.2.1登錄模塊測試主要是利用ftpclient控件實現ftp客戶端應用程序的登錄功能。要登錄ftp服務器,輸入合法的用戶帳號和密碼,如是匿名登錄用戶帳號為anonymous,密碼一般為空。詳細設置參數:hostname:服務器的ip地址或主機名稱,為字符串類型;port:服務器的通信端口,為int類型(ftp端口默認為21);username:用戶的登錄賬號;password:用戶的登錄密碼;這次畢業設計遇到的難點就是:連接到ftp服務器上,可以瀏覽它的內容,但不能識別文件夾。此問題后來通過使用搜索、bbs上發貼請教,最后算是順利解決如何判斷文件和目錄。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目管理知識更新的考察新題試題及答案
- 轎廂裝潢施工方案
- 2024年項目管理考試理念探討試題及答案
- 田地鉆孔施肥方案范本
- 農業職業經理人考試中的問答技巧訓練試題及答案
- 2024項目管理項目評審試題及答案
- 2023國家電投中能融合招聘筆試參考題庫附帶答案詳解
- 2023四川南充嘉融文化傳媒有限公司公開招聘工作人員5人筆試參考題庫附帶答案詳解
- 2023華電湖北發電有限公司所屬部分企業面向系統內外公開招聘11人筆試參考題庫附帶答案詳解
- 二零二五紹興場地租賃合同書范例
- 語言學-Chapter-4-Syntax復習進程
- 系統生物學-第三講-轉錄組學課件
- 2023年中荊投資控股集團有限公司招聘筆試模擬試題及答案解析
- 護士節趣味運動會主持詞
- -活出心花怒放的生命 課件 心理健康
- 2023年軟件正版化工作總結八篇
- 酒店報銷水單經典模板
- 給水泵檢修方案
- 《運營管理》第2版題庫與參考答案
- KEGG代謝通路中文翻譯
- 梅州市部分飲用水源保護區調整方案
評論
0/150
提交評論