[计算机毕设]基于java的文件传输系统设计与实现(项目报告+源代码)

项目报告

基于java的文件传输系统

随着计算机网络技术的飞速发展,客户/服务C/S(Client/Sersver)结构成为开发FTP的网络编程结构,Java作为Web应用程序的开

发技术也为更多的人所采用。

起初, FTP并不是应用于IP网络上的协议,而是ARPANET网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时,FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无需使用Telnet

登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。

和Internet上的许多环境一样,完整的Java应用环境实际上也是一个客户机/服务器环境,更确切地说是浏览器/服务器模型(即Browser/Server模型,简称Web模型)。但与传统的客户机/服务器(C/S)的二层结构不同,应用Java的Web模型是由三层结构组成的。传

统的C/S结构通过消息传递机制,由客户端发出请求给服务器,服务器进行相应处理后经传递机制送回客户端。而在Web模型中,服务器一端被分解成两部分:一部分是应用服务器(Web服务器),另一部分是数据库服务器.

FTP;C/S;B/S;JAVA

Abstract

As the computer network technology is developing in a high speed. C/S (Client/Server) has become a FTP network programming structure. Java is

Used moer and more as a Web application program.

In the beginning, FTP was not be used in IP net protocol, but which is used in ARPANEt network computers. ARPANEt was an old network of the U.S. Department of Defense between 1960s and 1980s.At that period the main function of the FTP is transmitting documents reliably and in high speed between the master computers. At present, it also does very well, furthermore, it permits store or access in telecommuting today. So the users can work on onesystem and store the document in another.  For example, someone use the

Web server, and need some HTML document and CGI program on his own computer, and want to acquire some documents, (the telnet need install Web server)When the user finished he can store the document to the Web server by the

FTP. In this way, the user can work without Telnet, which make the Web

server update more and more easier.

The whole Java circumstance actually is a C/S (Client/Server) like the other circumstances on the Internet, strictly to say, it is   Browser/Server model (Web model). But it is different from the traditional C/S model that is two layers structure. The Web using Java is three layers structure. The traditional C/Sstructure transmits by the message mechanism. The Client sent a request, and

the Server sent to it after some corresponding manages. But in the Web modelthe Server is separated into two parts, one is the application Server (Web Server); another is database Server.

Keywords:

FTP;C/S;B/S;JAVA

引  言

FTP(File Transfer Protocol)是文件传输协议的简称。 FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

目前FTP服务器软件都为国外作品,例如Server_U、IIS,国内成熟的FTP服务器软件很少,有一些如(Crob FTP Server),但从功能上看来远不能和那些流行的服务器软件媲美。

下面对这些软件简单的做一个比较:

IIS只适用于NT/2000/XPWindows操作系统,适合建个小型的同时在线用户数不超过10个的FTP服务器。它对账户的管理按照Windows用户账户方式进行;  

比起IIS来,Server_U的管理功能强大得多,而且设置也很方便。它是一款由Rob Beckers开发的获奖的FTP服务器软件,它功能强大又易于使用,支持 9x/ME/NT/2K 等全Windows系列。FTP服务器用户通过它用FTP协议能在internet上共享文件。Serv-U不仅100%遵从通用FTP标准,也包括众多的独特功能可为每个用户提供文件共享完美解决方案。它并不是简单地提供文件的下载,还为用户的系统安全提供了相当全面的保护。例如:您可以为您的 FTP 设置密码、设置各种用户级的访问许可等等;

而Crob FTP Server从功能设置上可以看出,它沿用了像Server_U等主流FTP服务器软件的基本设置;并加入了不少人性化的功能;同时支持多服务器。(即在软件中可以在任意的有效端口上建立任意多的FTP服务器并可同时运行,各服务器间互不相干的稳定运行)应该说进步是非常大的。并且可以应用于Windows 95/98/ME/me/N/T2000及最新的.NET操作系统上。

不过,纵观上面这些软件,它们都只能在Windows操作系统中运行,并且功能过于强大,许多功能应用于我们的考试系统的话,并没有太大的意义,而且有些也没必要,于是就需要一个专用的,而且也能通用(应用于UNIX等其他的 操作系统)的FTP服务器。要求实习一些基本功能:①文件上传;②文件下载;③文件列表和存在检查、文件属性查询。

基于以上的要求,可以说在选择开发语言的时候,无疑我选择了JAVA语言。众所周知,JAVA是一种可以编写跨平台应用软件的面向对象的程序设计语言。Java编程语言的风格十分接近C++语言。Java继承了C++语言面向对象技术的核心,舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载、多重继承(以接口取代)等成分,增加了自动垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。Java最初是为嵌入式小设备而设计的。起初 ,它为人们所喜爱的原因是由于可以用它来开发复杂的、以Applet为形式的客户端Web应用。然而,服务器端JAVA的应用的兴起才是JAVA编程最令人振奋的趋势。Java本质上适合开发大型客户机/服务器(Client/Server)应用。其跨平台、面向对象、内存保护的安全性、内在的对网络编程的支持以及丰富的API等特性使JAVA成为服务器端应用开发的一种理想语言。之所以选择JAVA语言,还有个重要的原因就是本人的个人所好。

在选择开发平台方面,JCreator、eclipse、Jbuilder等都是不错的选择,由于个人喜好我选择了Jbuilder作为我的开发平台,而在版本的选择上我选的是Jbuilder 2005。

通过阅读大量的文献质料,我发现用JAVA来开发FTP服务器还是具有一定的难度,主要是由于它不像开发FTP客户端的程序那样(Jbuilder中提供了一类网络类库sun.net.ftp.FtpClient.,该类库主要提供了用于建立FTP连接的类。利用这些类的方法,编程人员可以远程登录到FTP服务器,列举该服务器上的目录,设置传输协议,以及传送文件。FtpClient类涵盖了几乎所有FTP的功能,FtpClient的实例变量保存了有关建立。),在Jbuilder中并没有像FtpClient类这样的,来提供给用于服务器端编程的类,所以我们只能从FTP的工作原理入手,来解决服务器端的程序编写问题。经过分析,大体思路如下:

在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。

在主函数中,完成服务器端口的侦听和服务线程的创建。线程类的主要设计都是在run()方法中实现。用run()方法得到客户端的套接字信息,根据套接字得到输入流和输出流,向客户端发送欢迎信息。在文件传输方面,主要处理从服务器中获得文件RETR和向服务器中发送文件STOR,这两个命令的处理非常类似。处理RETR命令时,首先得到用户要获得的文件的名称,根据名称创建一个文件输入流,然后和客户端建立临时套接字连接,并得到一个输出流。随后,将文件输入流中的数据读出并借助于套接字输出流发送到客户端,传输完毕以后,关闭流和临时套接字;STOR 命令的处理也是同样的过程,只是方向正好相反。

当然,这只是大体的思路,具体的实现还涉及到许多细节上的问题了,从理论上来讲,利用JAVA来开发FTP服务器是可行的,也基本能完成我们预先所要达到的目标,实现一些基本功能,不过在检查文件的属性这方面还有待查找更多相关的质料。

另外,由于Internet网络带宽是有限的 ,所以可以考虑将在Internet上需要传输的数据文件压缩后再传输,则更有利于数据文件的快速传输,同时,压缩文件也可以节省服务器哦的外部存储空间。实现的时候,主要可应用Java API中java.util.zip包提供的ZipEntry、ZipInputStream和ZipOutputStream共3个类。本软件将尽量实现这个功能。

1 技术简介

1.1 Java语言
Java语言的优点主要表现在:简单、面向对象、多线程、分布性、体系结构中立、安全性等方面。
1.1.1 简单性
    Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 Java实现了自动的垃圾收集,简化了内存管理的工作。这使程序设计更加简便,同时减少了出错的可能。
1.1.2 面向对象
      Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。
    Java是一种完全面向对象的程序设计语言,它除了数组、布尔和字符三个基本数据类型外的其它类都是对象,它不再支持全局变量。在Java中,如果不创建新类就无法创建程序,Java程序在运行时必须先创建一个类的实例,然后才能提交运行。
    Java同样支持继承特性,Java的类可以从其它类中继承行为,但Java只支持类的单重继承,即每个类只能从一个类中继承。
    Java支持界面,界面允许程序员定义方法但又不立即实现,一个类可以实现多个界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。
1.1.3 多线程
      多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。
    Java程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个线程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证了较高的执行效率。

1.1.4 分布性
Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。
1.1.5 体系结构中立
      Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。Java为了做到结构中立,除生成机器无关的字节码外,还制定了完全统一的语言文本,如Java的基本数据类型不会随目标机的变化而变化,一个整型总是32位,一个长整型总是64位。
    为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。
java.lang: 一般的语言包。其中包括用于字符串处理、多线程、异常处理和数字函数等的类,该包是实现Java程序运行平台的基本包;
java.util: 实用工具包。其中包括哈希表、堆栈、时间和日期等;
java.io: 基于流模型的输入/输出包。该包用统一的流模型实现了各种格式的输入/输出,包括文件系统、网络和设备的输入/输出等;
java.net: 网络包。该包支持TCP/IP协议,其中提供了socket、URL和WWW的编程接口;
java.awt: 抽象窗口工具集。其中实现了可以跨平台的图形用户界面组件,包括窗口、菜单、滚动条和对话框等;
java.applet: 支持applet程序设计的基本包。
1.1.6 安全性
    用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
1.2 JAVA工具
1.2.1 JDK
(1) Java编译器
    Java编译器将Java源代码文件编译成可执行的Java字节码。Java源代码文件的扩展名为 .java,Java编译器把这种扩展名的文件编译成扩展名为.class的文件。源文件中的每个类在编译后都将产生一个class文件,这意味一个Java源代码文件可能编译生成多个class文件。
(2) Java解释器
    Java解释器对编译生成的字节码格式的可执行程序的运行提供支持,它是运行非图形Java程序的命令行工具。
(3) Appletviewer
    它是Java Applet的简单测试工具,可使用它来测试Java Applet程序,而不需要WWW浏览器的支持。
1.2.2 Visual J++
      Visual J++ 集成了可视化界面设计、交互式调试、代码编辑、联机帮助信息和介绍如何快速掌握该开发环境的实用向导等多项功能,同时具有能充分利用Active X和COM新技术的优势。利用Visual J++可创建交互性很强的Internet应用程序,是难得的Java 开发系统。

1.3 Java中输入/输出流概念
过滤流DataInputStream 和DataOutputStream 除了分别作为

FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数,如readBoolean() readInt()、readLine()、readFully()等。接口DataOutput中定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如writeChar()、writeDouble() DataInputStream可以从所连接的输入流中读取与机器无关的基本类型数据,用以实现一种独立于具体平台的输入方式;DataInputStream 可以向所连接的输出流写入基本类型的数据。
1.4 Socket 机制    

Socket是面向客户/服务器模型设计的,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。 Socket通常用来实现客户方和服务方的连接。客户程序可以向Socket写请求,服务器将处理此请求,然后通过Socket将结果返回给用户。
    Socket通信机制提供了两种通讯方式:有联接和无联接方式,分别面向不同的应用需求。使用有联接方式时,通信链路提供了可靠的,全双工的字节流服务。在该方式下,通信双方必须创建一个联接过程并建立一条通讯链路,以后的网络通信操作完全在这一对进程之间进行,通信完毕关闭此联接过程。使用无联接方式时其系统开销比无联接方式小,但通信链路提供了不可靠的数据报服务,不能保证信源所传输的数据一定能够到达信宿。在该方式下,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同的主机和进程之间转发进行。

1.5 JBuilder集成开发环境介绍

Borland JBuilder是全球第一的跨平台Java开发环境,可以用于构建符合工业标准的Java应用系统,开发EJB、Web、XML以及数据库等各类应用程序。双向、可视化设计工具使得我们可以快速的构建各种J2EE应用程序,并部署至多种应用程序服务器,包括BEA WebLogic、IBM WebSphere、Sun ONE Application Server、Oracle 10g Application Server以及整合于JBuilder的Borland Enterprise Server。
    鉴于此原因,在我们学习Java语言的时候,也没有理由杜绝使用JBuilder这个优秀的编译器。除非你看到集成开发环境就晕,呵呵(初学者和大师经常这样说)。当然如果你还是初学者,选择Intellij IDEA也不错,简单、清晰,他获得了2003年Java最佳编译器大奖,集成了很多先进的软件工程方法。但是做企业级的开发,JBuilder无可争论的成为最佳选择。
    Quick Start---原来JBuilder这么容易上手
    正如你使用其它的编译器学习Java语言一样,你的几个想法之一便是“让我尽快的完成一个Hello World吧!”。我们暂且什么都不看,仅仅快速的完成一个Hello World程序。安装JBuilder似乎并不需要更多的向导大家都能够独立完成。那么赶快打开这个集成开发环境,让我们尽快完成我们的Hello World。运行JBuilder后我们看到了这样的界面:
    赶快新建一个工程(一个习惯是,不管你建立的程序有多么的小,建立一个工程是一个良好的程序设计习惯,便于有效的管理你的代码和编译后生成的资源),在新建的工程中新建一个HelloWorld类文件HelloWorld.java。你的工程名、类文件名和类名最好是统一的,这是一个良好的编程习惯。需要注意的是:你得类文件名和类名必须是统一的,否则就会出现类似下面的报警错误,我们假设将类名命名为HelloWorldd,而文件名为HelloWorld,编译后就会出现下面的提示信息:
"HelloWorld.java": class HelloWorldd is public; should be        declared in a file named HelloWorldd.java at line 12, columnl
    完整的HelloWorld程序可以参考下面的建立:
写好你的程序后,编译运行之。右击工程栏当中的HelloWorld.java,选择Debug Using Defaults。除非上面的步骤出现问题,否则你将会很兴奋的看到,HelloWorld在信息窗格中输出了!
这样看来似乎JBuilder没有那么复杂,对么?很多人花了N长时间来调试一个HelloWorld程序,不是环境变量没有设置好就是忘记这个丢了那个。但你绝不能从此断定“搞定!我已经掌握了JBuilder!”其实这只是给大家建立一个信心,告诉大家JBuilder其实并不像你想象的那样无法接受而已。想要彻底掌握JBuilder,我们需要认真的学习下面的指导。
    AppBrowser--我以后天天对着你打开JBuilder集成开发环境的时候,我们面对的便是AppBrowser。下面我们来逐一的介绍主要的组成部件:
    如果是正在调试多个工程或者你需要打开多个AppBrowser窗口,可以点击Window菜单中的New Browser或者是在工程窗体中右击文件名,点击Open in New Browser。
    再来看看主工具栏,如果你觉得这么多快捷按钮不爽,大可在下面这幅图的指导下关掉这些工具栏。在View中选择Toolbars:
    但个人习惯使用默认的工具栏,提供了不少方便。
    工程窗体中显示的是当前的工程以及当前工程所包含的所有文件。结构窗体中展示了当前在被编辑的文件结构,下面的图片显示的便是刚刚的HelloWorld文件结构,很简单是么,只有一个main方法。
如果你的程序中有错误,结构窗体就会实时出现一个Errors文件夹,其中包含了这些语法错误。Improts中存放的是所有引入的Package。
下面我们再来看看位于内容窗体下的文件查看页签:
Source 显示的是目前文件的源代码,可以直接进行编辑。
Design 中包含了组件托盘,以便进行可视化程序开发。
Bean 中包含了BeanExpress设计工具,可以用于查看和编辑bean的特性。
UML 好神奇,打开看看刚才系统为你的工程创建的UML图!
Doc 为你的文件创建了一个Javadoc。
History显示了文件的版本控制系统记录。
    开发环境中一个非常重要的工具便是搜索栏,你可以在工具栏上看到一个搜索栏,这个是在当前文档中进行内容搜索用的。如果你要对某些类进行搜索,不妨同时按下Ctrl和减号。在Search中可以对类进行搜索,在Browse中可以对package进行搜索。

2 系统分析

2.1 可行性分析

可行性研究就是预开发软件系统的总体目标,给出它的功能、性能、可靠性以及其他方面的要求。其目的是用最小的代价在尽可能短的时间内确定问题是否能够解决、是否值得去解决。

下面从四个方面分析本系统的可行性:

⑴ 技术可行性

本系统用JAVA进行代码的编写,目前十分流行的一种技术,主要用于开发服务端的脚本程序和动态生成网站。它与目前同样流行的VB技术技术是相同性质的、同一层次的,它们在网站的建设中所起的作用是一样的,但是JAVA技术与这两种技术相比,有着十分突出的优越性,发展前途不可限量。

⑵ 经济可行性

经济可行性分析(能否赢利)是,从经济的角度分析本系统的规划方案有无实现的可能和开发的价值;分析网站系统所带来的经济效益是否超过开发和维护网站所需要的费用。经济上的可行性是企业行为的基础。

由于本系统的开发设计是为完成毕业设计任务而进行的,所以不存在赢利问题。所在此也就不讨论经济可行性问题。

⑶ 开发环境可行性

网站开发需要的开发环境需要装有windows2000系统以上的电脑上运行,这样的配置在当今已经不能成为难题,而服务器方面,只需要一台安装了JAVA和JBuilder服务的计算机即可。所以开发环境可行性是没有任何问题的。

2.2 开发工具

整个系统的开发和运行所需的软件环境包括。

(1) 服务器操作系统:Windows/Unix

(2) 客户端操作系统:Windows 2000/XP/Unix

(3) 系统框架结构:J2EE框架组织系统结构;

(4) 开发工具:Jbuilder,Frontpage 2003;

2.3 需求分析

根据毕业设计的要求,传输系统的主要功能实现在网络环境下,客户端与服务端的文件传输。主要有客户端与服务端两大模块。

整个系统基于Web环境,应用于FTP服务器,故考虑后台数据库采用JAVA编写,充分发挥其在Internet信息处理方面上的优势,实现方便快捷、高效实用,安全稳定的开发效果。

系统开发的总体任务是连接FTP服务器,上传/下载文件、对FTP服务器站点的管理、服务器端提供FTP服务、允许远程登录下载服务器上的文件。功能层次图如图1所示,

图1  FTP功能层次图

FTP数据流图,如图2所示

图2  FTP数据流图

3 系统详细设计

3.1 系统的主要功能

在日常的网络应用中,文件传输已经成为继即时通讯之后第二大的网络基础应用,而点对点的文件发送是最方便的文件传输手段。越来越多的网民或是商业用户都采 用这种方式发送文件,目前许多即时通讯软件,例如QQ、MSN都有点对点文件传输功能,同时还出现了专门的点对点文件传输工具,如快递通等。
    当今比较流行的局域网内文件传输软件,如:飞鸽传书等。我们本次制作的软件就是以飞鸽传书为参照,具体功能也是飞鸽传书的基础上,通过分析与对比,总结其他此类软件的优缺点,制作出一款有自己特色的内网传输软件。主要特点要突出在,方便快速,实用性强,功能适应于广大用户,实现文件资源在局域网快速传递分享,充分利用内网宝贵的资源。
    当打开软件,首先要让通知在线用户(使用了本软件的的用户),让对方知道自己的在线状态,同时也获取其他用户的在线情况,及时了解本软件的在线用户状态。用户可以根据自己的需要,向在线用户名单列表,添加与删除当前在线用户的名单,并可以手动刷新用户名单。当然本软件也会自动刷新用户名单列表,而且可以根据自己的需要,设定软件自动刷新的时间间隔,做到准确掌握在线名单。
    知道了用户的在线情况,如果想对某个在线用户进行对话或发送文件,则可以双击在线用户名单列表中的某个用户,系统将会自动弹出一个对话框,并在对话框显示对方的连接情况。然后就可以进行发送文字信息或回复对方,同时在信息显示栏中会显示双方之间所进行多的全部对话历史记录。在此对话期间,还可以同时发送文件给对方。对话框界面简单实用,方便操作,一目了然。
    然而,有的人不太喜欢太多别人发信息给自己,或十分的讨厌太多的“骚扰”信息,这个时候,只要你选择主窗口的基本设置处,就会用相应的设置,在“自动弹开对话窗口”字样的前面,把复选框前面的勾取消,就可以取消一切外来用户发送来的信息,也就不会再有信息“骚扰”了。
    然后回到主窗口介绍下。首先可以看到,基本设置框,直接显示在最前端,这样方便用户进行必要的添加设置或重新设置。
    用户可以根据自己的电脑配置,或自己的意图进行必要的端口设定。此端口是用来接收文件的主要端口,通过设定此端口,有效的提高发送速度与质量,同时还可以在一定程度上保证信息在传输过程中的安全性。当然在局域网内,为了更多的资源共享,为了更多的方便,也为了时间效益,我们一般选择默认的端口就可以了;否则发送与接收文件的双方都必须先要进行“对话与协议”,才能有效的建立文件传送与接收。
    至于时间间隔项,我们在上面已经有介绍过,其主要用途就是刷新在线用户名单,保证了对话与发送文件的实效性。
    很多人在发送或接收文件的时候,总不希望自己的电脑出现当机(也就是所谓的死机)状态。不难想象,要是很多用户同时连接到你的电脑,此时电脑是很难发挥起“速度效益”的作用,有的时候反而导致一系列的什么“崩溃”、“当机”、“停滞”现象。所以在设置“最大连接”还是有一定的必要性的。此选项可以根据自己的需要、自己的电脑配置进行更改。一般情况下设置为默认也就行了。
    接下来的,“自动弹开对话窗口”,在上面也有轻轻的描述过,在此就不多论述了。
        现在介绍下系统的主要部分,也是核心部分。既然说是“局域网内文件传输软件”,那么传输部分当然是不可缺少的部分。
    其实此功能实现起来并不难,只要用户选择了一个文件接收对象,即文件接收方,就可以选择文件与对方进行连接与发送文件了。当有新文件发送,对方(接收方)会自动弹出一个接受文件的对话窗体,对方可以接受或拒绝。对方拒绝接收文件,那么双方也就中断了文件的接收与发送,并且接收方会通知发送方中断的消息。相反,要是接收方同意了接收文件,文件的传输工作就会启动,进行一系列的数据包发送与接收。此时,双方都可以很清楚的知道对方的发送与接收状态,比如:发送方可以知道文件接收方是否中止或退出接收,发送是否异常,是否需要重新发送数据包;接收方同样可以知道对方的状态,以及文件接收率,速度等情况。还有很多功能都可以在界面上直接看到,在这里就没有必要一一提出。
因为系统可以同时发送多个文件,并且可以同时与多人聊天、对话。打开的窗口可能很多很多,十个、百个、千个? 此时,要是想关闭这些子窗口,只需要轻轻点下“关闭子窗”,一切就OK了,这样就省去了很多时间,真正体现“方便,快捷”。
    为了“抗骚扰”,系统还特意的设置了黑名单功能,此功能里可以轻易的设定需要“排斥”的对象。在这部分重要用到FSO模块技术,可以动态生成一个黑名单文件,操作直观而简单。
系统的功能体现了方便与实用的特点,并不是一意追求太强大的功能与复杂的界面,而是通用的基础上做到实效。例如其中的“多聊、群发”功能都有力的体现了这点。

3.2 模块设计

主窗口如图3所示

图3  主窗口

文件发送窗口如图4所示

图3  文件发送窗口

文件接收窗口如图5所示

图3  文件接收窗口

3.3 FTP协议简介
3.3.1 什么是FTP协议
    FTP协议即文件传输协议(File Transfer Protocol),它是TCP/IP协议族的应用协议之一,是Internet上使用非常广泛的一种通信协议。它是由支持Internet文件传输的各种规则所组成的集合,这些规则使Internet用户可以把文件从一个主机拷贝到别一个主机上。通过TCP/IP连接在一起的任何两台计算机,如果安装了FTP和服务器,就可以通过FTP服务进行相互之间的文件传输,因而为用户提供了极大的方便和收益。FTP通常也表示用户执行这个协议所使用的应用程序。
    FTP和其他的Internet服务一样,亦采用客户机/服务器方式。它要求用户用本地的客户端与服务器建立连接,然后才能从服务器上获取文件(Download),或向服务器发送文件(Upload)。使用方法很简单;启动FTP程序先与主机连接,然后向远程主机发出传输命令,远程主机给予响应,执行正确命令。
    目前Windows操作系统最常用的FTP软件有WS-FTP,CUTEFTPT等。FTP有一个根本的限制,那就是:如果用户未被某一服务器授权,未取得User Name和Password就不能访问该主机,实际上是不能远程登陆(Remote Login)进入该主机。而Anonymous FTP(匿名FTP)则取消了这种限制。
3.3.2 FTP文件传输的主要特点
  用户有合法的用户名和口令的前提下才与服务器建立连接。通过客户端软件,用户可以在权限允许的范围内进行文件更名、删除、或传送操作。
3.3.3 FTP支持的文件传送类型
  FTP支持的文件传送类型,它们是ASCII和二进制映像。
(1)文本文件(ASCII):在传送文本文件时应该使用ASCII。在ASCII模式中,将执行网络标准字符转换。例如,行尾的字符在必要时根据目标操作系统进行转换。
(2)二进制(Binary)文件的传输可执行文件、图像和压缩文件等时应该使用二进制。在二进制模式中,一个字节接一个字节地移动文件。
3.3.4 FTP在实现网络传输时提供的3种模式
(1)流模式(Stream mode)。在这种模式下,FTP将文件作为一系列字节进行处理,适用于任何数据类型。FTP针对不同的文件结构指明文件的开始和结尾。
(2)块模式(Block mode)。在这种模式下,FTP将文件作为大量块传输,每一个块前都有一个报头,包含有块的大小和描述符。所谓的描述符是用来确定该块在整个文件中的位置,指明该块是不是最后一块,同时,描述符还有一个位来描述数据是否可靠。
(3)压缩模式(Compressed mode)。这种模式主要用于提高传输的效率,能有效利用网络带宽。

4 结束语

4.1 系统评价

花了比较多的时间在教师论文管理上进行了详细的需求分析,对于系统各个方面的功能有了比较透彻的了解,因此在功能模块设计过程中能够划分出层次清晰的功能层次图。在详细功能设计中抽取出各个功能模块共性的具体功能,对其进行了详细的描述设计,这样各功能模块在后来的实际编码中能够快速地实现,对于服务器管理中的数据维护、大批量录入修改等功能能够较好地实现预计功能。

但是由于它是为需求服务的原型模型,注重的是满足基本的需求,因此它的实现还是很粗糙的,还是有很多不足的。

4.2 关于下一步要解决的几个问题的讨论

4.2.1关于安全性问题

安全性问题:由于论文管理这个模块涉及到大量的论文信息,一旦被恶意更改将会造成极其严重的后果,因此安全性问题在这个子模块显得尤为重要。

采取的措施:

(1) 安装防火墙

安装防火墙并且屏蔽数据库端口能有效地阻止来自Internet 上对数据的攻击。

(2) 防止IE 缓冲登录页面在登录页面设置方法

客户在请求中嵌入恶意HTML 标记,这种攻击通常包含一个由用户提交的病态脚本,或者包含恶意的HTML (或XML) 标记,JSP 引擎会把这些内容引入到动态生成的页面。这种攻击可能针对其他用户进行,也可能针对服务器。通常,被滥用的标记是那些能够把代码嵌入到页面的标记,比如< SCRIPT > 、< OBJECT > 、< APPLET > 和< EMBED> 等。特别是< FORM > 可能被用于欺骗浏览者暴露敏感信息。要防止出现这种问题要靠输入检查和输出过滤。这类检查必须在服务器端进行。一旦校验代码发现有可疑的请求信息,就将这些可疑代码替换,将其过滤掉。比如:可以先用request.getParameter()方法获取用户提交的信息,再用message.replace()的方法将可疑字符替换成无关紧要的字符。

(3) 用户授权认证

用户授权通过pass这个校验bean 进行验证,用户在输入用户名和密码进入系统后,就会得到一个session 对象,而他在该次登录后的所有访问都与该session 有关。所有的session 对象由系统随机生成,为安全起见,该系统还提供了用户注销session的功能以及设定自动注销session的时间,一旦超过这个时间不进行操作,session自动注销。为了防止用户绕过登录页面,系统在重要的页面还检查用户是否登录过并检验用户的操作权限,如果没有登录或没有操作权限,将用户重定向到登录页面。该校验Bean 还可以有效的阻止用户多次尝试登录。

参考文献

[1] 廖雷等,Java程序设计教程,中国电力出版社,2003
[2] Warton,Java多线程编程初步,电脑报,2004.4.10
[3] 张立等,基于Client/Server模式的数据库应用软件的设计与实现,计算机应用研究,1999(4)

[4] 李书杰,李志刚.B/S三层体系结构模式[J].河北理工学院学报, 2003:27-28

[5] (美)伯格斯坦(Bergsten, H.)编著;何健辉,许俊娟译.JSP设计[M].北京:中国电力出版社,2004

[6] (美)埃克尔(Eckel, B.)著;侯捷译.Java编程思想(第二版)[M].北京:机械工业出版社,2003.9

[7] 曹建编著.HTML、JavaScript与Java三合一最新培训教程[M].北京:电子工业出版社,2003

参考资料:

java毕业设计——JAVA文件传输(论文+源代码).zip

Java毕业设计174例,包含部署视频-CSDN博客

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业课程设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值