计算机网络课程设计JAVA实现FTP客户端.doc

上传人:wj 文档编号:4890723 上传时间:2023-05-07 格式:DOC 页数:23 大小:343KB
下载 相关 举报
计算机网络课程设计JAVA实现FTP客户端.doc_第1页
第1页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第2页
第2页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第3页
第3页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第4页
第4页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第5页
第5页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第6页
第6页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第7页
第7页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第8页
第8页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第9页
第9页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第10页
第10页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第11页
第11页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第12页
第12页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第13页
第13页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第14页
第14页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第15页
第15页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第16页
第16页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第17页
第17页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第18页
第18页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第19页
第19页 / 共23页
计算机网络课程设计JAVA实现FTP客户端.doc_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机网络课程设计JAVA实现FTP客户端.doc

《计算机网络课程设计JAVA实现FTP客户端.doc》由会员分享,可在线阅读,更多相关《计算机网络课程设计JAVA实现FTP客户端.doc(23页珍藏版)》请在冰点文库上搜索。

计算机网络课程设计JAVA实现FTP客户端.doc

河南理工大学

计算机科学与技术学院

课程设计报告

2015—2016学年第一学期

课程名称计算机网络

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

姓名****

学号361309010410

专业班级计科合1304

指导教师孟慧

2016年1月9日

目录

第一章序言 2

1.1课程设计题目 3

1.2开发工具 3

第二章系统需求分析 5

2.1功能需求 5

2.2系统模型设计 5

2.3系统工作流程设计 5

第三章系统设计 6

3.1实现功能 6

3.2函数说明 6

3.2.1界面设计代码 6

3.2.2功能实现函数 9

第四章系统实现 13

4.1界面设计的实现 13

4.1.1连接服务器 13

4.1.2获取文件列表 13

4.1.3断开服务器 14

4.1.4上传文件 15

4.1.5下载 16

4.1.6重命名 18

4.1.7删除 19

4.1.8刷新 20

4.1.9返回上一目录 21

4.1.10查看日志信息 21

第五章总结 22

第六章参考文献 23

第一章序言

1.1课程设计题目

FTP(FileTransferProtocol,FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。

FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。

FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unencode一样。

但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登陆进程。

FTP服务一般运行在20和21两个端口。

端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。

当数据通过数据流传输时,控制流处于空闲状态。

而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。

此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。

FTP客户端主要目标是:

促进文件的共享(计算机程序或数据);鼓励间接或者隐式的使用远程计算机;向用户屏蔽不同主机中各种文件存储系统的细节;可靠和高效的传输数据。

1.2开发工具

随着程序设计技术的改革和计算机环境的改变,Java语言也得到了迅速发展。

一方面,C++等面向对象程序设计语言的发展为Java提供了基础。

事实上,Java也大量继承了C以及C++的成果,并增加了体现程序设计发展状态的功能。

另一方面,网络及Internet的发展对程序设计提出了新的要求,为Java的发展注入了强大的动力。

正是Internet的快速发展和普及,改变了传统的计算模式,促进了Java的普及与流行。

它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。

由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。

就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。

Java编程语言的风格十分接近C、C++语言。

Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。

在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

Java不同于一般的编译执行计算机语言和解释执行计算机语言。

它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。

不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。

但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。

与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。

全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。

“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。

这与微软公司所倡导的注重精英和封闭式的模式完全不同。

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

第二章系统需求分析

2.1功能需求

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

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

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

4.可以查看一系列的操作的日志信息。

控制进程

数据传送进程

用户接口

命令与应答

控制连接

数据连接

文件传输

数据传送进程

控制进程

服务器

客户端

2.2系统模型设计

FTP的基本模型

客户端用户

登录

登录验证

操作内容列表

查看文件列表

连接成功至

服务器端

上传文件

重命名文件

上翻文件列表

删除文件

下翻文件列表

下载文件

文件管理

连接失败退出

2.3系统工作流程设计

第三章系统设计

3.1实现功能

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

2.文件删除、上翻文件目录、下翻文件目录

3.界面实现部分:

设计为一个用户界面,上面包括各种用户按钮、文本输入栏、状态栏等等。

具体如下:

服务器地址信息输入栏、端口信息输入栏、用户名、密码输入栏、用户登陆(连接)按钮、用户退出(断开连接)按钮、服务器文件显示列表框、下载文件按钮、上传文件按钮、重命名文件按钮、删除文件按钮、上一级目录按钮,下一级目录按钮,状态栏。

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)获取文件名列表

ListgetFileNameList()

使用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()

使用retur

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2