FTP客户端的设计与实现标准的实验报告.docx
- 文档编号:8287509
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:20
- 大小:271.80KB
FTP客户端的设计与实现标准的实验报告.docx
《FTP客户端的设计与实现标准的实验报告.docx》由会员分享,可在线阅读,更多相关《FTP客户端的设计与实现标准的实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
FTP客户端的设计与实现标准的实验报告
铜陵学院
《计算机网络》
课程设计
设计题目:
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.2FTP的基本模型
2.3系统工作流程设计
第三章系统设计
3.1实现功能
用户登陆用户退出文件上传文件下载文件重命名
文件删除上翻文件目录下翻文件目录
界面实现部分:
设计为一个用户界面,上面包括各种用户按钮、文本输入栏、状态栏等等。
具体如下:
服务器地址信息输入栏、端口信息输入栏、用户名、密码输入栏、用户登陆(连接)按钮、用户退出(断开连接)按钮、服务器文件显示列表框、下载文件按钮、上传文件按钮、重命名文件按钮、删除文件按钮、上一级目录按钮,下一级目录按钮,状态栏。
3.2函数说明
3.2.1界面设计代码
每个按钮对象注册监听器对应相关的业务逻辑,调用FtpBean类中的对应方法。
下面是页面部分实现的主要代码以及相关说明:
packageftp;
importjava.awt.event.*;
importjava.awt.*;
importjava.util.*;
importjava.util.List;
importjava.util.StringTokenizer;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclassFTPextendsJFrame
{
FtpBeanftp=newFtpBean();//FTP客户端对象
privateFileWriterwrite;
privatePrintWriterout;
privateDatetime;
privateJTextFieldurl=newJTextField();//FTP服务器地址
privateJTextFieldport=newJTextField();//FTP服务器端口
privateJTextFieldusername=newJTextField();//用户名
privateJTextFieldpassword=newJTextField();//密码
privateJTextFieldstatus=newJTextField();//当前状态
privateJButtonconnectButton=newJButton("连接");//连接按钮
privateJButtoncloseButton=newJButton("断开连接");//断开连接按钮
privateJPopupMenupopup=newJPopupMenu();;
privateJMenuItemrefresh=newJMenuItem("刷新");//右键弹出菜单
privateJMenuItemdelete=newJMenuItem("删除");
privateJMenuItemdownload=newJMenuItem("下载");
privateJMenuItemupload=newJMenuItem("上传");
privateJMenuItemrename=newJMenuItem("重命名");
privateJMenuItemupDir=newJMenuItem("上级目录");
privateJMenuItemshowLog=newJMenuItem("显示日志信息");
finalDefaultListModelm=newDefaultListModel();//显示文件列表
JListfileList=newJList(m);
JScrollPanefileScrollPane;
privateDimensionfaceSize=newDimension(400,600);//框架大小
publicFTP()
{
init();
createPopup();//弹出菜单
time=newDate();
try
{
write=newFileWriter("log.txt",true);
out=newPrintWriter(write,true);
}
catch(IOExceptionioe)
{
ioe.printStackTrace();
}
status.setEditable(false);
this.add(status,BorderLayout.SOUTH);//下方
connectButton.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
connect();
}
});
closeButton.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
close();
time=newDate();
out.println(time+"离开服务器:
"+url.getText());
}
});
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//添加框架的关闭事件处理
this.pack();
this.setSize(faceSize);//设置框架的大小
DimensionscreenSize=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(//关闭程序时的操作
newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
close();
System.exit(0);
}
}
);
}
voidinit()
{
ContainercontentPane=getContentPane();//获取面板
contentPane.setLayout(newBorderLayout());//设置布局
JPanelup=newJPanel();//设置面板上方控件布局
up.setLayout(newGridLayout(3,2));
url.setText("10.255.76.126");
port.setText("21");
username.setText("gaojin");
password.setText("gaojin");
JPanelno1=newJPanel();
no1.setLayout(newBorderLayout());
no1.add(newJLabel("服务器:
"),BorderLayout.WEST);
no1.add(url,BorderLayout.CENTER);
JPanelno2=newJPanel();
no2.setLayout(newBorderLayout());
no2.add(newJLabel("端口号:
"),BorderLayout.WEST);
no2.add(port,BorderLayout.CENTER);
JPanelno3=newJPanel();
no3.setLayout(newBorderLayout());
no3.add(newJLabel("用户名:
"),BorderLayout.WEST);
no3.add(username,BorderLayout.CENTER);
JPanelno4=newJPanel();
no4.setLayout(newBorderLayout());
no4.add(newJLabel("密码:
"),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=newJScrollPane(fileList,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
fileScrollPane.setPreferredSize(newDimension(300,400));
this.add(fileScrollPane,BorderLayout.CENTER);//中部
}
3.2.2功能实现函数
使用SUN公司提供的FTP客户端类库。
主要包括4个类:
.TelnetInputStream
.TelnetOutputStream
.ftp.FtpClient
.ftp.FtpLoginException
编写FtpBean类实现业务逻辑,包含一个FtpClient类的对象ftpClient。
包含的方法如下:
(1)建立连接
Stringconnect(Stringdir,Stringhostname,intport,Stringusername,Stringpasswd)
使用ftpClient=newFtpClient(hostname,port);
ftpClient.login(username,passwd);
(2)获取文件名列表
List
使用InputStreamReaderisr=null;
BufferedReaderbr=null;
isr=newInputStreamReader(this.ftpClient.nameList(this.getDir()));
br=newBufferedReader(isr);
获取输入流来得到目录中的文件信息
(3)判断路径
booleanisDir(Stringline)
使用line.startsWith("d")来判断
(4)设置路径
booleansetPath(Stringpath)
使用ftpClient.cd(path);实现
(5)上传文件
booleanuploadFile(StringlocalFile,StringtargetFileName)
使用ftpClient.cd(path);实现
(5)上传文件
booleanuploadFile(StringlocalFile,StringtargetFileName)
使用
TelnetOutputStreamtos=null;
RandomAccessFilesendFile=null;
DataOutputStreamdos=null;
try
{
Filefile=newFile(localFile);
sendFile=newRandomAccessFile(file,"r");
sendFile.seek(0);
tos=this.ftpClient.put(targetFileName);
dos=newDataOutputStream(tos);
intch=0;
while(sendFile.getFilePointer() { ch=sendFile.read(); dos.write(ch); } 获取文件输出流,读取数据并写入文件 (6)下载文件 booleandownloadFile(StringsrcFileName,StringtargetFileName) 使用TelnetInputStreamtis=null; RandomAccessFilegetFile=null; booleanresult=true; try { Filefile=newFile(targetFileName); getFile=newRandomAccessFile(file,"rw"); getFile.seek(0); tis=this.ftpClient.get(srcFileName); DataInputStreamdis=newDataInputStream(tis); intch=0; while(true) { ch=dis.read(); if(ch<0) { break; } getFile.write(ch) } getFile.close(); } 获取文件输入流,读取数据并写入文件 (7)进入上一级文件目录 up() 使用ftpClient.cdUp();实现 (8)进入下一级文件目录 downDir() 使用上面的方法来实现下一级文件目录的访问 (9)给文件重命名 booleanrenameFile(StringoldName,StringnewName) 使用ftpClient.rename(oldName,newName);来实现 (10)删除文件 deleteFile(StringfileName) 使用Stringcmd="DELE"+fileName+"\r\n"; ftpClient.sendServer(cmd); 来实现 (11)获取当前路径 StringgetDir() 使用returnthis.ftpClient.pwd();实现 (12)关闭连接 Stringclose() 使用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.RichardStevens.TCP/TP详解卷1: 协议【M】。 北京: 机械工业出版社,2000。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FTP 客户端 设计 实现 标准 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)