版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱: 計(jì)算機(jī)網(wǎng)絡(luò) </p><p> 設(shè)計(jì)題目: FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn) </p><p> 系 別: 計(jì)算機(jī)與信息工程學(xué)院
2、 </p><p> 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 組 別: </p><p> 起止日期: 2011年11月25 日~ 2011年12月10日 </p>
3、<p> 指導(dǎo)教師: </p><p> 計(jì)算機(jī)科學(xué)與技術(shù)系二○一 一年制</p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p><b> 目 錄</b></p><p><b> 第一章
4、 序言3</b></p><p><b> 1.1課題來(lái)源3</b></p><p><b> 1.2開(kāi)發(fā)工具4</b></p><p> 第二章 系統(tǒng)需求分析5</p><p><b> 2.1功能需求5</b></p><p
5、> 2.2 系統(tǒng)模型設(shè)計(jì)5</p><p> 2.3 系統(tǒng)工作流程設(shè)計(jì)5</p><p> 第三章 系統(tǒng)設(shè)計(jì)6</p><p><b> 3.1實(shí)現(xiàn)功能6</b></p><p><b> 3.2函數(shù)說(shuō)明6</b></p><p> 3.2.1界面
6、設(shè)計(jì)代碼6</p><p> 3.2.2功能實(shí)現(xiàn)函數(shù)10</p><p> 第四章 系統(tǒng)實(shí)現(xiàn)13</p><p> 4.1界面設(shè)計(jì)的實(shí)現(xiàn)13</p><p> 4.1.1連接服務(wù)器13</p><p> 4.1.2獲取文件列表14</p><p> 4.1.3斷開(kāi)服務(wù)器
7、15</p><p> 4.1.4上傳文件16</p><p> 4.1.5下載18</p><p> 4.1.6重命名19</p><p> 4.1.7刪除21</p><p> 4.1.8刷新22</p><p> 4.1.9返回上一目錄23</p>&
8、lt;p> 4.1.10查看日志信息23</p><p><b> 第五章 總結(jié)24</b></p><p> 第六章 參考文獻(xiàn)25</p><p><b> 第一章 序言</b></p><p><b> ——耿桂花</b></p><
9、;p><b> 1.1課題來(lái)源</b></p><p> FTP(File Transfer Protocol, FTP)是TCP/IP網(wǎng)絡(luò)上兩臺(tái)計(jì)算機(jī)傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP網(wǎng)絡(luò)和INTERNET上最早使用的協(xié)議之一,它屬于網(wǎng)絡(luò)協(xié)議組的應(yīng)用層。FTP客戶機(jī)可以給服務(wù)器發(fā)出命令來(lái)下載文件,上載文件,創(chuàng)建或改變服務(wù)器上的目錄。FTP是一個(gè)8位的客戶端-服務(wù)器協(xié)議,能操作
10、任何類型的文件而不需要進(jìn)一步處理,就像MIME或Unencode一樣。但是,F(xiàn)TP有著極高的延時(shí),這意味著,從開(kāi)始請(qǐng)求到第一次接收需求數(shù)據(jù)之間的時(shí)間會(huì)非常長(zhǎng),并且不時(shí)的必需執(zhí)行一些冗長(zhǎng)的登陸進(jìn)程。FTP服務(wù)一般運(yùn)行在20和21兩個(gè)端口。端口20用于在客戶端和服務(wù)器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務(wù)器的進(jìn)口。當(dāng)數(shù)據(jù)通過(guò)數(shù)據(jù)流傳輸時(shí),控制流處于空閑狀態(tài)。而當(dāng)控制流空閑很長(zhǎng)時(shí)間后,客戶端的防火墻會(huì)將其會(huì)話置為超
11、時(shí),這樣當(dāng)大量數(shù)據(jù)通過(guò)防火墻時(shí),會(huì)產(chǎn)生一些問(wèn)題。此時(shí),雖然文件可以成功的傳輸,但因?yàn)榭刂茣?huì)話會(huì)被防火墻斷開(kāi),傳輸會(huì)產(chǎn)生一些錯(cuò)誤。FTP客戶端主要目標(biāo)是:促進(jìn)文件的共享(計(jì)算機(jī)程序或數(shù)據(jù));鼓勵(lì)間接或者隱式的使用遠(yuǎn)程計(jì)算機(jī);向用戶屏蔽不</p><p> 因此,開(kāi)發(fā)FTP客戶端成為一個(gè)很有必要的事情。</p><p><b> 1.2開(kāi)發(fā)工具</b></p&g
12、t;<p> 隨著程序設(shè)計(jì)技術(shù)的改革和計(jì)算機(jī)環(huán)境的改變,Java語(yǔ)言也得到了迅速發(fā)展。一方面,C++等面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的發(fā)展為Java提供了基礎(chǔ)。事實(shí)上,Java也大量繼承了C以及C++的成果,并增加了體現(xiàn)程序設(shè)計(jì)發(fā)展?fàn)顟B(tài)的功能。另一方面,網(wǎng)絡(luò)及Internet的發(fā)展對(duì)程序設(shè)計(jì)提出了新的要求,為Java的發(fā)展注入了強(qiáng)大的動(dòng)力。正是Internet的快速發(fā)展和普及,改變了傳統(tǒng)的計(jì)算模式,促進(jìn)了Java的普及與流行。&l
13、t;/p><p> 它最初被命名為Oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語(yǔ)言,來(lái)解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問(wèn)題。由于這些智能化家電的市場(chǎng)需求沒(méi)有預(yù)期的高,Sun放棄了該項(xiàng)計(jì)劃。就在Oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“Java”的名稱正式發(fā)布。</p><p> Java 編程語(yǔ)言的風(fēng)
14、格十分接近C、C++語(yǔ)言。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了 C++ 語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C ++語(yǔ)言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Pro
15、gramming)、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性。 Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大
16、幅提升。 與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開(kāi)放的技術(shù)。全球數(shù)以萬(wàn)計(jì)</p><p> Java 編程語(yǔ)言的主要特性是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。 </p><p> 第二章 系統(tǒng)需求分析</p><p><b> ——方瑩瑩</b></p
17、><p><b> 2.1功能需求</b></p><p> 1.實(shí)現(xiàn)一個(gè)圖形用戶界面的FTP客戶端,保證文件的安全傳輸和存儲(chǔ)。</p><p> 2.通過(guò)輸入服務(wù)器地址、用戶名和密碼、可以實(shí)現(xiàn)遠(yuǎn)程FTP主機(jī)的登錄。</p><p> 3.提供本地文件的上傳功能,可對(duì)FTP主機(jī)文件進(jìn)行下載、上傳、刪除、重命名等文件操
18、作。</p><p> 4.可以查看一系列的操作的日志信息。</p><p> 2.2 系統(tǒng)模型設(shè)計(jì)</p><p><b> FTP的基本模型</b></p><p> 2.3 系統(tǒng)工作流程設(shè)計(jì)</p><p><b> 第三章 系統(tǒng)設(shè)計(jì)</b></p>
19、;<p><b> ——高進(jìn)</b></p><p> 3.1實(shí)現(xiàn)功能 </p><p> 用戶登陸、用戶退出、文件上傳、文件下載、文件重命名</p><p> 文件刪除、上翻文件目錄、下翻文件目錄</p><p><b&
20、gt; 界面實(shí)現(xiàn)部分:</b></p><p> 設(shè)計(jì)為一個(gè)用戶界面,上面包括各種用戶按鈕、文本輸入欄、狀態(tài)欄等等。具體如下:服務(wù)器地址信息輸入欄、端口信息輸入欄、用戶名、密碼輸入欄、用戶登陸(連接)按鈕、用戶退出(斷開(kāi)連接)按鈕、服務(wù)器文件顯示列表框、下載文件按鈕、上傳文件按鈕、重命名文件按鈕、刪除文件按鈕、上一級(jí)目錄按鈕,下一級(jí)目錄按鈕,狀態(tài)欄。</p><p><
21、;b> 3.2函數(shù)說(shuō)明</b></p><p> 3.2.1界面設(shè)計(jì)代碼 </p><p> 每個(gè)按鈕對(duì)象注冊(cè)監(jiān)聽(tīng)器對(duì)應(yīng)相關(guān)的業(yè)務(wù)邏輯,調(diào)用FtpBean類中的對(duì)應(yīng)方法。下面是頁(yè)面部分實(shí)現(xiàn)的主要代碼以及相關(guān)說(shuō)明:</p><p> package ftp;
22、</p><p> import java.awt.event.*;</p><p> import java.awt.*;</p><p> import java.util.*;</p><p> import java.util.List;</p><p> import java.util.Strin
23、gTokenizer;</p><p> import java.io.*;</p><p> import javax.swing.*;</p><p> import javax.swing.event.*;</p><p> public class FTP extends JFrame</p><p>
24、<b> {</b></p><p> FtpBean ftp=new FtpBean();//FTP客戶端對(duì)象</p><p> private FileWriter write ;</p><p> private PrintWriter out;</p><p> private Date time;
25、</p><p> private JTextField url = new JTextField(); //FTP服務(wù)器地址</p><p> private JTextField port = new JTextField(); //FTP服務(wù)器端口</p><p> private JTextField username = new JTextFi
26、eld(); //用戶名</p><p> private JTextField password = new JTextField(); //密碼</p><p> private JTextField status = new JTextField();//當(dāng)前狀態(tài)</p><p> private JButton connectButton=new J
27、Button("連接");//連接按鈕</p><p> private JButton closeButton=new JButton("斷開(kāi)連接");//斷開(kāi)連接按鈕</p><p> private JPopupMenu popup = new JPopupMenu();;</p><p> private JMe
28、nuItem refresh = new JMenuItem("刷新"); //右鍵彈出菜單</p><p> private JMenuItem delete = new JMenuItem("刪除");</p><p> private JMenuItem download = new JMenuItem("下載");
29、 </p><p> private JMenuItem upload = new JMenuItem("上傳"); </p><p> private JMenuItem rename = new JMenuItem("重命名");</p><p> private JMenuItem upDir = new JM
30、enuItem("上級(jí)目錄");</p><p> private JMenuItem showLog = new JMenuItem("顯示日志信息");</p><p> final DefaultListModel m=new DefaultListModel(); //顯示文件列表</p><p> JList
31、fileList = new JList(m);</p><p> JScrollPane fileScrollPane;</p><p> private Dimension faceSize = new Dimension(400, 600); //框架大小</p><p> public FTP()</p><p><b&g
32、t; {</b></p><p><b> init(); </b></p><p> createPopup(); //彈出菜單</p><p> time = new Date();</p><p><b> try</b></p><p><
33、;b> {</b></p><p> write = new FileWriter("log.txt",true);</p><p> out = new PrintWriter(write,true);</p><p><b> }</b></p><p> catch(
34、IOException ioe)</p><p><b> {</b></p><p> ioe.printStackTrace(); </p><p><b> }</b></p><p> status.setEditable(false);</p><p>
35、 this.add(status,BorderLayout.SOUTH); //下方</p><p> connectButton.addActionListener( new ActionListener()</p><p><b> {</b></p><p> public void actionPerformed(ActionEv
36、ent e)</p><p><b> {</b></p><p> connect();</p><p><b> }</b></p><p><b> });</b></p><p> closeButton.addActionListen
37、er(new ActionListener()</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e)</p><p><b> {</b></p><p><b> close();</b
38、></p><p> time = new Date();</p><p> out.println(time+" 離開(kāi)服務(wù)器:"+url.getText());</p><p><b> }</b></p><p><b> });</b></p>
39、<p> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //添加框架的關(guān)閉事件處理</p><p> this.pack();</p><p> this.setSize(faceSize); //設(shè)置框架的大小</p><p> Dimension screenSize = Tool
40、kit.getDefaultToolkit().getScreenSize();</p><p> this.setLocation( (int) (screenSize.width - faceSize.getWidth()) / 2,</p><p> (int) (screenSize.height - faceSize.getHeight()) / 2);</p>
41、<p> this.setResizable(false);</p><p> this.setTitle("FTP服務(wù)端"); //設(shè)置標(biāo)題</p><p> setVisible(true);</p><p> this.addWindowListener(//關(guān)閉程序時(shí)的操作</p><p>
42、 new WindowAdapter()</p><p><b> {</b></p><p> public void windowClosing(WindowEvent e)</p><p><b> {</b></p><p><b> close();</b>
43、</p><p> System.exit(0);</p><p><b> }</b></p><p><b> }</b></p><p><b> );</b></p><p><b> }</b></p>
44、;<p> void init()</p><p><b> {</b></p><p> Container contentPane = getContentPane(); //獲取面板</p><p> contentPane.setLayout(new BorderLayout()); //設(shè)置布局</p
45、><p> JPanel up = new JPanel();//設(shè)置面板上方控件布局</p><p> up.setLayout(new GridLayout(3,2));</p><p> url.setText("10.255.76.126");</p><p> port.setText("21&
46、quot;);</p><p> username.setText("gaojin");</p><p> password.setText("gaojin");</p><p> JPanel no1 = new JPanel();</p><p> no1.setLayout(new Bo
47、rderLayout());</p><p> no1.add(new JLabel("服務(wù)器:"),BorderLayout.WEST);</p><p> no1.add(url,BorderLayout.CENTER);</p><p> JPanel no2 = new JPanel();</p><p>
48、 no2.setLayout(new BorderLayout());</p><p> no2.add(new JLabel("端口號(hào):"),BorderLayout.WEST);</p><p> no2.add(port,BorderLayout.CENTER);</p><p> JPanel no3 = new JPanel()
49、;</p><p> no3.setLayout(new BorderLayout());</p><p> no3.add(new JLabel("用戶名:"),BorderLayout.WEST);</p><p> no3.add(username,BorderLayout.CENTER);</p><p>
50、 JPanel no4 = new JPanel();</p><p> no4.setLayout(new BorderLayout());</p><p> no4.add(new JLabel("密碼 :"),BorderLayout.WEST);</p><p> no4.add(password,BorderLayout
51、.CENTER);</p><p> up.add(no1);</p><p> up.add(no2);</p><p> up.add(no3);</p><p> up.add(no4);</p><p> up.add(connectButton);</p><p> up.
52、add(closeButton);</p><p> closeButton.setEnabled(false);</p><p> this.add(up,BorderLayout.NORTH);//上方</p><p> fileScrollPane = new JScrollPane(fileList,</p><p> JS
53、crollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p><p> JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);</p><p> fileScrollPane.setPreferredSize(new Dimension(300,400));</p><p> this.add(fil
54、eScrollPane,BorderLayout.CENTER); //中部</p><p><b> }</b></p><p> 3.2.2功能實(shí)現(xiàn)函數(shù)</p><p> 使用SUN公司提供的FTP客戶端類庫(kù)。</p><p><b> 主要包括4個(gè)類:</b></p>
55、<p> sun.net.TelnetInputStream</p><p> sun.net.TelnetOutputStream</p><p> sun.net.ftp.FtpClient</p><p> sun.net.ftp.FtpLoginException</p><p> 編寫(xiě)FtpBean類實(shí)現(xiàn)業(yè)務(wù)邏
56、輯,包含一個(gè)FtpClient類的對(duì)象ftpClient。包含的方法如下:</p><p><b> (1) 建立連接</b></p><p> String connect(String dir, String hostname, int port, String username,String passwd)</p><p> 使用
57、 ftpClient = new FtpClient(hostname, port);</p><p> ftpClient.login(username, passwd);</p><p> (2) 獲取文件名列表</p><p> List<String> getFileNameList()</p><p> 使用
58、 InputStreamReader isr = null;</p><p> BufferedReader br = null;</p><p> isr = new InputStreamReader(this.ftpClient.nameList(this.getDir()));</p><p> br = new BufferedReader(isr)
59、;</p><p> 獲取輸入流來(lái)得到目錄中的文件信息</p><p><b> (3) 判斷路徑</b></p><p> boolean isDir(String line)</p><p> 使用line.startsWith("d")來(lái)判斷</p><p>&l
60、t;b> (4) 設(shè)置路徑</b></p><p> boolean setPath(String path)</p><p> 使用ftpClient.cd(path);實(shí)現(xiàn)</p><p><b> (5) 上傳文件</b></p><p> boolean uploadFile(Str
61、ing localFile, String targetFileName)</p><p> 使用 ftpClient.cd(path);實(shí)現(xiàn)</p><p><b> (5) 上傳文件</b></p><p> boolean uploadFile(String localFile, String targetFileName)<
62、/p><p><b> 使用</b></p><p> TelnetOutputStream tos = null;</p><p> RandomAccessFile sendFile = null;</p><p> DataOutputStream dos = null;</p><p>
63、;<b> try </b></p><p><b> {</b></p><p> File file = new File(localFile);</p><p> sendFile = new RandomAccessFile(file, "r");</p><p>
64、; sendFile.seek(0);</p><p> tos = this.ftpClient.put(targetFileName);</p><p> dos = new DataOutputStream(tos);</p><p> int ch = 0;</p><p> while (sendFile.getFileP
65、ointer() < sendFile.length())</p><p><b> {</b></p><p> ch = sendFile.read();</p><p> dos.write(ch);</p><p><b> }</b></p><p>
66、 獲取文件輸出流,讀取數(shù)據(jù)并寫(xiě)入文件</p><p><b> (6) 下載文件</b></p><p> boolean downloadFile(String srcFileName, String targetFileName)</p><p> 使用TelnetInputStream tis = null;</p>
67、<p> RandomAccessFile getFile = null;</p><p> boolean result = true;</p><p><b> try </b></p><p><b> {</b></p><p> File file = new Fil
68、e(targetFileName);</p><p> getFile = new RandomAccessFile(file, "rw");</p><p> getFile.seek(0);</p><p> tis = this.ftpClient.get(srcFileName);</p><p> Dat
69、aInputStream dis = new DataInputStream(tis);</p><p> int ch = 0;</p><p> while (true) </p><p><b> {</b></p><p> ch = dis.read();</p><p> i
70、f (ch < 0)</p><p><b> {</b></p><p><b> break;</b></p><p><b> } </b></p><p> getFile.write(ch) </p><p><b>
71、 }</b></p><p> getFile.close();</p><p><b> } </b></p><p> 獲取文件輸入流,讀取數(shù)據(jù)并寫(xiě)入文件</p><p> (7) 進(jìn)入上一級(jí)文件目錄</p><p><b> up()</b><
72、;/p><p> 使用ftpClient.cdUp();實(shí)現(xiàn)</p><p> (8) 進(jìn)入下一級(jí)文件目錄</p><p><b> downDir()</b></p><p> 使用上面的方法來(lái)實(shí)現(xiàn)下一級(jí)文件目錄的訪問(wèn)</p><p> (9) 給文件重命名</p><
73、p> boolean renameFile(String oldName, String newName)</p><p> 使用ftpClient.rename(oldName, newName);來(lái)實(shí)現(xiàn)</p><p><b> (10) 刪除文件</b></p><p> deleteFile(String fileName
74、)</p><p> 使用String cmd = "DELE " + fileName + "\r\n";</p><p> ftpClient.sendServer(cmd);</p><p><b> 來(lái)實(shí)現(xiàn)</b></p><p> (11) 獲取當(dāng)前路徑</
75、p><p> String getDir()</p><p> 使用return this.ftpClient.pwd();實(shí)現(xiàn)</p><p><b> (12) 關(guān)閉連接</b></p><p> String close()</p><p> 使用ftpClient.closeServ
76、er();實(shí)現(xiàn)</p><p><b> 第四章 系統(tǒng)實(shí)現(xiàn)</b></p><p><b> ——單連暉 陳智</b></p><p> 4.1界面設(shè)計(jì)的實(shí)現(xiàn)</p><p> 4.1.1連接服務(wù)器</p><p> 單擊連接若服務(wù)器名稱、端口、用戶名和密碼對(duì)的前提
77、下登錄到指定的服務(wù)器上面,彈出“登錄成功”對(duì)話框,并在下方狀態(tài)欄中顯示“登錄成功</p><p> 4.1.2獲取文件列表</p><p> 登錄到服務(wù)器上面之后,獲取在服務(wù)器用戶的主文件及文件夾</p><p><b> 并在下方狀態(tài)欄顯示</b></p><p> 4.1.3斷開(kāi)服務(wù)器</p>
78、<p> 當(dāng)用戶需要關(guān)閉連接時(shí),單機(jī)“斷開(kāi)連接”就可斷開(kāi)與服務(wù)器的連接,在狀態(tài)欄上顯示“連接已斷開(kāi)”,此時(shí)并不退出客戶端。</p><p><b> 4.1.4上傳文件</b></p><p> 右擊彈出快捷菜單單擊上傳顯示上傳對(duì)話框</p><p><b> 選擇需要上傳的文件</b></p>
79、;<p> 單擊打開(kāi)即可上傳,上傳成功顯示“上傳成功”對(duì)戶框,并在狀態(tài)欄顯示當(dāng)前狀態(tài)</p><p><b> 4.1.5下載</b></p><p><b> 單擊下載</b></p><p> 彈出下載主機(jī)路徑,指定目錄以及文件名稱,單擊打開(kāi)</p><p> 下載成功
80、會(huì)彈出對(duì)話框“下載文件+源文件具體目錄+成功”</p><p><b> 4.1.6重命名</b></p><p> 選中需要重命名的文件或者文件夾,右擊彈出快捷菜單,單擊重命名</p><p> 在彈出的對(duì)話中輸入新的名稱,然后單擊確定</p><p> 彈出重命名成功的消息框</p><
81、p><b> 4.1.7刪除</b></p><p> 選中需要?jiǎng)h除的文件,右擊彈出快捷菜單,單擊刪除</p><p> 彈出刪除文件成功消息框</p><p> 此時(shí)的文件夾已經(jīng)把選中的從列表中移除</p><p><b> 4.1.8刷新</b></p><p
82、> 當(dāng)進(jìn)行上傳,重命名、刪除或者服務(wù)器更新列表時(shí),文件列表沒(méi)有及時(shí)更新,可以點(diǎn)擊刷新按鈕進(jìn)行顯示</p><p> 4.1.9返回上一目錄</p><p> 在文件夾子目錄需要返回上一級(jí)目錄時(shí),單擊“上級(jí)目錄”即可以實(shí)現(xiàn)</p><p> 4.1.10查看日志信息</p><p> 日志信息是對(duì)用戶操作的記錄,如果需要查看,單
83、擊查看日志信息即可打開(kāi)記錄日志的文件</p><p><b> 第五章 總結(jié) </b></p><p> 在老師的指導(dǎo)下,經(jīng)過(guò)我們小組成員的積極探討和研究,我們終于完成了小組的課程設(shè)計(jì)——FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)。</p><p> 雖然我們?cè)谠撓到y(tǒng)功能上還有許多不足,但通過(guò)這一段時(shí)間的設(shè)計(jì),從擬定方案,設(shè)計(jì)模塊,解決開(kāi)發(fā)過(guò)程中遇到的各種
84、困難,最終實(shí)現(xiàn)了該文件傳輸系統(tǒng)的基本功能。使我們對(duì)FTP客戶端有了更深的了解。</p><p> FTP的目標(biāo)是提高文件的共享性和可靠高效地傳送數(shù)據(jù),而FTP客戶端的作用是使用戶方便的連接和訪問(wèn)FTP客戶端。該設(shè)計(jì)實(shí)現(xiàn)了簡(jiǎn)單的FTP客戶端,選擇java類庫(kù)使客戶通過(guò)FTP客戶端能簡(jiǎn)單地連接和訪問(wèn),上傳、下載、刪除、刷新、返回上級(jí)目錄等基本的操作功能。我們選擇Java來(lái)實(shí)現(xiàn)主要是它在程序上顯得更加簡(jiǎn)捷靈活,并具有
85、較好的可擴(kuò)充性和移植性。</p><p><b> 第六章 參考文獻(xiàn)</b></p><p> 【1】 謝希仁 計(jì)算機(jī)網(wǎng)絡(luò)(第五版)【M】。北京:電子工業(yè)出版社,2006。</p><p> 【2】 趙生慧等編譯 Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第二版)【M】。北京:中國(guó)水利水電出版社,2010。 </p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)--簡(jiǎn)單ftp服務(wù)器實(shí)現(xiàn)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_ftp文件傳輸
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 《計(jì)算機(jī)網(wǎng)絡(luò)》課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 《計(jì)算機(jī)網(wǎng)絡(luò)》課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 《計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)》
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論