最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

FTP客户端的设计与实现标准的实验报告

来源:动视网 责编:小OO 时间:2025-10-04 13:48:33
文档

FTP客户端的设计与实现标准的实验报告

铜陵学院《计算机网络》课程设计设计题目:FTP客户端的设计与实现系别数学与计算机科学院班级11计算机本(2)学生姓名施德磊学号1106111111学生姓名李煜学号1106111100学生姓名殷晨晨学号1106111161学生姓名李新年学号1106111147学生姓名张强学号1106111131学生姓名林黄灿学号1106111102指导教师汪永生职称讲师起止日期:2013年12月15日起——2013至12年20月日止目录第一章序言21.1研究背景21.2开发工具2第二章系统需求分析22.1功能需
推荐度:
导读铜陵学院《计算机网络》课程设计设计题目:FTP客户端的设计与实现系别数学与计算机科学院班级11计算机本(2)学生姓名施德磊学号1106111111学生姓名李煜学号1106111100学生姓名殷晨晨学号1106111161学生姓名李新年学号1106111147学生姓名张强学号1106111131学生姓名林黄灿学号1106111102指导教师汪永生职称讲师起止日期:2013年12月15日起——2013至12年20月日止目录第一章序言21.1研究背景21.2开发工具2第二章系统需求分析22.1功能需
铜  陵  学  院

《计算机网络》

课 程 设 计

设计题目:     FTP客户端的设计与实现                               

系    别  数学与计算机科学院     班级 11计算机本(2)     

学生姓名   施德磊               学号   1106111111               

学生姓名   李煜                 学号   1106111100               

学生姓名   殷晨晨               学号   1106111161                

学生姓名   李新年               学号   1106111147               

学生姓名   张强                 学号   1106111131              

学生姓名   林黄灿               学号   1106111102                

指导教师   汪永生               职称       讲   师         

 

     起止日期:2013年12月15日起——2013至12年20月日止

 

目  录

第一章 序言    2

1.1 研究背景    2

1.2 开发工具    2

第二章 系统需求分析    2

2.1功能需求    2

2.2 系统模型设计    3

2.3 系统工作流程设计    3

第三章 系统设计    4

3.1实现功能    4

3.2 函数说明    4

3.2.1 界面设计代码    4

3.2.2 功能实现函数    9

第四章 系统实现    13

4.1界面设计的实现    13

4.1.1 连接服务器    13

4.1.2 获取文件列表    14

4.1.3 断开服务器    14

4.1.4 上传文件    15

4.1.5 下载    17

4.1.6 重命名    18

4.1.7 删除    19

4.1.8 刷新    20

   总结    21

 参考文献    21

第一章 序言

   摘要

FTP是Internet上用来传送文件的协议。它是为了我们能够在Internet上互相传送文件而制定的文件传送标准,规定了Internet上文件如何传送。通过FTP协议,我们就可以跟Internet上的FTP服务器进行文件的上传或下载。本文以实现一个简单易用的FTP客户端为目标,通过分析FTP协议的基本工作原理和FTP的数据传输原理,研究如何使用Java工具对FTP客户端进行设计,选择Java类库中的ftpclient类来实现FTP客户端程序的上传下载等主要功能,并用Jbuilder2006软件提供的一个支持可视化编程的开发环境,从而实现了对FTP客户端的开发.

 关键词:FTP协议、工作原理、ftpclient、上传下载                      

1.1 研究背景

FTP是Internet上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。用FTP将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便。如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机中,以便在本地计算机上操作。FTP正是完成这项工作的工具,你可以在任意一个经过文件传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。传统的数据库应用系统采用的是客户机/服务器(Client/Server)模式,有高度的交互性,高效的用户界面等优点.

 1.2 开发工具

  Java 编程语言,Java 编程语言的主要特性是个简单、面向对象、分布式解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 

第二章 系统需求分析                                      

2.1功能需求

1.实现一个图形用户界面的FTP客户端,保证文件的安全传输和存储。

2.通过输入服务器地址、用户名和密码、可以实现远程FTP主机的登录。

3.提供本地文件的上传功能,可对FTP主机文件进行下载、上传、删除、重命名等文件操作。

2.2 系统模型设计

图2.2 FTP的基本模型

2.3 系统工作流程设计

第三章 系统设计

3.1 实现功能                                     

用户登陆  用户退出  文件上传  文件下载 文件重命名

文件删除  上翻文件目录  下翻文件目录

界面实现部分:

设计为一个用户界面,上面包括各种用户按钮、文本输入栏、状态栏等等。具体如下:服务器地址信息输入栏、端口信息输入栏、用户名、密码输入栏、用户登陆(连接)按钮、用户退出(断开连接)按钮、服务器文件显示列表框、下载文件按钮、上传文件按钮、重命名文件按钮、删除文件按钮、上一级目录按钮,下一级目录按钮,状态栏。

3.2 函数说明

3.2.1 界面设计代码                                            

每个按钮对象注册对应相关的业务逻辑,调用FtpBean类中的对应方法。下面是页面部分实现的主要代码以及相关说明:

package ftp;

import java.awt.event.*;

import java.awt.*;

import java.util.*;

import java.util.List;

import java.util.StringTokenizer;

import java.io.*;

import javax.swing.*;

import javax.swing.event.*;

public class FTP extends JFrame

{    

FtpBean ftp=new FtpBean();    //FTP客户端对象

   private FileWriter write ;

private PrintWriter out;

private Date time;  

   private JTextField url = new JTextField();   //FTP服务器地址

   private JTextField port = new JTextField();  //FTP服务器端口

   private JTextField username = new JTextField(); //用户名

   private JTextField password = new JTextField();  //密码

private JTextField status = new JTextField();//当前状态

private JButton connectButton=new JButton("连接");//连接按钮

private JButton closeButton=new JButton("断开连接");//断开连接按钮

private JPopupMenu popup = new JPopupMenu();;

private JMenuItem refresh = new JMenuItem("刷新"); //右键弹出菜单

private JMenuItem delete  = new JMenuItem("删除");

 private JMenuItem download  = new JMenuItem("下载"); 

private JMenuItem upload  = new JMenuItem("上传"); 

private JMenuItem rename =  new JMenuItem("重命名");

private JMenuItem upDir = new JMenuItem("上级目录");

private JMenuItem showLog = new JMenuItem("显示日志信息");

final DefaultListModel m=new DefaultListModel(); //显示文件列表

JList fileList = new JList(m);

JScrollPane fileScrollPane;    

private Dimension faceSize = new Dimension(400, 600); //框架大小

public FTP()

{

   init(); 

createPopup();  //弹出菜单

time = new Date();

try

{

      write = new FileWriter("log.txt",true);

out = new PrintWriter(write,true);

}

   catch(IOException ioe)

   {    

      ioe.printStackTrace(); 

   }   

   status.setEditable(false);

   this.add(status,BorderLayout.SOUTH); //下方

connectButton.addActionListener( new ActionListener()

{

   public void actionPerformed(ActionEvent e)

      {

          connect();

       }

});

closeButton.addActionListener(new ActionListener()

    {

        public void actionPerformed(ActionEvent e)

        {

            close();

time = new Date();

out.println(time+" 离开服务器:"+url.getText());

         }

     });

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //添加框架的关闭事件处理

     this.pack();

     this.setSize(faceSize);   //设置框架的大小

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation( (int) (screenSize.width - faceSize.getWidth()) / 2,

(int) (screenSize.height - faceSize.getHeight()) / 2);

this.setResizable(false);

this.setTitle("FTP服务端");     //设置标题

setVisible(true);

this.addWindowListener(    //关闭程序时的操作

       new WindowAdapter()

       {

           public void windowClosing(WindowEvent e)

           {

               close();

              

               System.exit(0);

            }

        }

      );

}

void init()

{

    Container contentPane = getContentPane();  //获取面板

contentPane.setLayout(new BorderLayout());  //设置布局    

JPanel up = new JPanel();    //设置面板上方控件布局

up.setLayout(new GridLayout(3,2));    

url.setText("10.255.76.126");

port.setText("21");

username.setText("gaojin");

password.setText("gaojin");

JPanel no1 = new JPanel();    

no1.setLayout(new BorderLayout());

no1.add(new JLabel("服务器:"),BorderLayout.WEST);

no1.add(url,BorderLayout.CENTER);

JPanel no2 = new JPanel();    

no2.setLayout(new BorderLayout());

no2.add(new JLabel("端口号:"),BorderLayout.WEST);

     no2.add(port,BorderLayout.CENTER);

JPanel no3 = new JPanel();    

no3.setLayout(new BorderLayout());

no3.add(new JLabel("用户名:"),BorderLayout.WEST);

no3.add(username,BorderLayout.CENTER);

JPanel no4 = new JPanel();    

no4.setLayout(new BorderLayout());

no4.add(new JLabel("密码    :"),BorderLayout.WEST);

no4.add(password,BorderLayout.CENTER);

up.add(no1);

up.add(no2);

up.add(no3);

up.add(no4);

up.add(connectButton);

up.add(closeButton);

closeButton.setEnabled(false);

this.add(up,BorderLayout.NORTH);    //上方

           

     fileScrollPane = new JScrollPane(fileList,

JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

fileScrollPane.setPreferredSize(new Dimension(300,400));

this.add(fileScrollPane,BorderLayout.CENTER);  //中部    

}

3.2.2 功能实现函数

                                         

使用SUN公司提供的FTP客户端类库。

主要包括4个类:

sun.net.TelnetInputStream

sun.net.TelnetOutputStream

sun.net.ftp.FtpClient

sun.net.ftp.FtpLoginException

编写FtpBean类实现业务逻辑,包含一个FtpClient类的对象ftpClient。包含的方法如下:

(1) 建立连接

String connect(String dir, String hostname, int port, String username,String passwd)

使用   ftpClient = new FtpClient(hostname, port);

       ftpClient.login(username, passwd);

(2) 获取文件名列表

List getFileNameList()

使用  InputStreamReader isr = null;

       BufferedReader br = null;

isr = new InputStreamReader(this.ftpClient.nameList(this.getDir()));

br = new BufferedReader(isr);

获取输入流来得到目录中的文件信息

(3) 判断路径

boolean isDir(String line)

使用line.startsWith("d")来判断

(4) 设置路径

boolean setPath(String path)    

使用ftpClient.cd(path);实现

(5) 上传文件

boolean uploadFile(String localFile, String targetFileName)

使用 ftpClient.cd(path);实现

(5) 上传文件

boolean uploadFile(String localFile, String targetFileName)

使用

 TelnetOutputStream tos = null;

        RandomAccessFile sendFile = null;

        DataOutputStream dos = null;

        try 

        {

            File file = new File(localFile);

            sendFile = new RandomAccessFile(file, "r");

            sendFile.seek(0);

            tos = this.ftpClient.put(targetFileName);

            dos = new DataOutputStream(tos);

            int ch = 0;

while (sendFile.getFilePointer() < sendFile.length())

           {

                 ch = sendFile.read();

                 dos.write(ch);

            }

获取文件输出流,读取数据并写入文件

(6) 下载文件

boolean downloadFile(String srcFileName, String targetFileName)

使用TelnetInputStream tis = null;

        RandomAccessFile getFile = null;

       boolean result = true;

       try 

       {

            File file = new File(targetFileName);

            getFile = new RandomAccessFile(file, "rw");

            getFile.seek(0);

            tis = this.ftpClient.get(srcFileName);

            DataInputStream dis = new DataInputStream(tis);

            int ch = 0;

            while (true) 

            {

                ch = dis.read();

if (ch < 0)

               {

                    break;

                } 

                getFile.write(ch) 

             }

             getFile.close();

        } 

获取文件输入流,读取数据并写入文件

(7) 进入上一级文件目录

up()

使用ftpClient.cdUp();实现

(8) 进入下一级文件目录

downDir()

使用上面的方法来实现下一级文件目录的访问

(9) 给文件重命名

boolean renameFile(String oldName, String newName)

使用ftpClient.rename(oldName, newName);来实现

(10) 删除文件

deleteFile(String fileName)

使用String cmd = "DELE " + fileName + "\\r\\n";

    ftpClient.sendServer(cmd);

来实现

(11) 获取当前路径

String getDir()

使用return this.ftpClient.pwd();实现

(12) 关闭连接

String close()

使用ftpClient.closeServer();实现

第4章 系统实现

4.1 界面设计的实现

4.1.1 连接服务器

         单击连接若服务器名称、端口、用户名和密码对的前提下登录到指定的服务器上面,弹出“登录成功”对话框,并在下方状态栏中显示“登录成功

          

                          图4.1.1

4.1.2 获取文件列表

        登录到服务器上面之后,获取在服务器用户的主文件及文件夹

并在下方状态栏显示

图4.1.2

4.1.3 断开服务器

当用户需要关闭连接时,单机“断开连接”就可断开与服务器的连接,在状态栏上显示“连接已断开”,此时并不退出客户端。

                           图4.1.3

4.1.4 上传文件

       右击弹出快捷菜单单击上传显示上传对话框

                             图4.1.4.1

选择需要上传的文件

图4.1.4.2

单击打开即可上传,上传成功显示“上传成功”对户框,并在状态栏显示当前状态

图4.1.4.3

4.1.5 下载

       单击下载

图4.1.5.1

弹出下载主机路径,指定目录以及文件名称,单击打开    

图 4.1.5.2

下载成功会弹出对话框“下载文件+源文件具体目录+成功”

图4.1.5.3

4.1.6  重命名    

          选中需要重命名的文件或者文件夹,右击弹出快捷菜单,单击重命名

图4.1.6.1

在弹出的对话中输入新的名称,然后单击确定

图4.1.6.2

   4.1.7  删除

        选中需要删除的文件,右击弹出快捷菜单,单击删除

图4.1.7.1

弹出删除文件成功消息框

此时的文件夹已经把选中的从列表中移除

图4.1.7.2

4.1.8  刷新

         当进行上传,重命名、删除或者服务器更新列表时,文件列表没有及时更新,可以点击刷新按钮进行显示

图4.1.8

 

   

 第五章 总结 

                                        

在老师的指导下,经过我们小组成员的积极探讨和研究,我们终于完成了小组的课程设计——FTP客户端的设计与实现。

虽然我们在该系统功能上还有许多不足,但通过这一段时间的设计,从拟定方案,设计模块,解决开发过程中遇到的各种困难,最终实现了该文件传输系统的基本功能。使我们对FTP客户端有了更深的了解。

FTP的目标是提高文件的共享性和可靠高效地传送数据,而FTP客户端的作用是使用户方便的连接和访问FTP客户端。该设计实现了简单的FTP客户端,选择java类库使客户通过FTP客户端能简单地连接和访问,上传、下载、删除、刷新、返回上级目录等基本的操作功能。

第六章 参考文献

【1】 谢希仁 计算机网络(第五版)【M】。北京:电子工业出版社,2006。

【2】 赵生慧等编译 Java面向对象程序设计(第二版)【M】。北京:中国水利水电出版社,2010。                

【3】杨树林,胡洁萍Java语言最新实用案例教程【M】。北京:科学出版社,2006。

【4】叶俊明 软件工程【M】。北京:清华大学出版社,2006:第三章 软件需求分析基础。

【5】W.Richard Stevens.TCP/TP详解卷1:协议【M】。北京:机械工业出版社,2000。

文档

FTP客户端的设计与实现标准的实验报告

铜陵学院《计算机网络》课程设计设计题目:FTP客户端的设计与实现系别数学与计算机科学院班级11计算机本(2)学生姓名施德磊学号1106111111学生姓名李煜学号1106111100学生姓名殷晨晨学号1106111161学生姓名李新年学号1106111147学生姓名张强学号1106111131学生姓名林黄灿学号1106111102指导教师汪永生职称讲师起止日期:2013年12月15日起——2013至12年20月日止目录第一章序言21.1研究背景21.2开发工具2第二章系统需求分析22.1功能需
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top