1 功能列表

功能编号

功能名称

功能说明

优先级

注释和问题

F1

监听端口

检测出本机的ip地址



F2

创立链接

选择文件进行传输



F3

接受响应否

确认是否进行文件传输



F4

断点续传

设置起始传输字节并从起始字节开始传输



2 系统设计思想

按照p2p文件传输系统总体结构的设计,具体各层的详细说明请参照下图。

Java 传输GB级文件方法_网络

3 系统结构

3.1 对象模型

Java 传输GB级文件方法_网络_02

4 模块描述

4.1 概述

4.2 模块列表

4.2.1构成图

Java 传输GB级文件方法_Java 传输GB级文件方法_03

4.2.2 MainFrame

该类是视图类,是软件的主界面。

Java 传输GB级文件方法_网络_04

 

成员变量:

contentPane

contentPane是JPanel类的对象,是主界面的面板。

jbtnSend

jbtnSend是JButton类对象,点击它将打开文件传输对话框。

jbtnSetting

jbtnSetting是JButton类对象,点击它将打开设置对话框。

jlblIP

jlblIP是JLable类对象,它显示本机的IP地址,方便文件的传输。

jtpTransFile

jtpTransFile是JTabbedPane类对象,是选项卡控件,用于显示多个文件同时传输。

tfm

tfm是TransFileManager类对象,负责控制文件的传输。

成员方法:

jbtnSend_anctionPerformed()

该方法为jbtnSend按钮的点击事件

jbtnSetting_actionPerformed()

该方法为jbtnSetting按钮的点击事件

This_windowClosed()

该方法为窗口关闭事件

界面截图:

Java 传输GB级文件方法_类对象_05

 

Form 名称

变量

validate()方法

4.2.3 TransFileManager类

该类负责传输过程中对各个传输线程的检测与控制。

Java 传输GB级文件方法_文件传输_06

 

成员变量:

jtp

jtp是选项卡控件对象,是MainFrame类中jtpTransFile对象的一个引用。

panelist

paneList是ArrayList类对象,它是一个链表结构,存储使用的选项卡。

running

running是一个boolean型的对象,用来表示线程是否在执行。

s

s是Server类的对象,用来坚听本地端口,等待用户的连接。

threadList

threadList是ArrayList类对象,它是一个链表结构,存储使用的传输线程。

maxThreadNum

maxTreadNum是整型变量,表示最大允许的线程数。

port

port是整型变量,表示使用的端口号。

成员方法:

close()

该方法用于关闭文件传输的控制。

sendFile()

该方法用于建立一个文件发送,要求输入参数为,目标IP,端口号,要发送的文件和验证消息。

4.2.4  SocketThread类

SocketThread类是文件传输的底层支持类,它提供文件传输的服务。

Java 传输GB级文件方法_类对象_07

 

成员变量:

sendBuf

sendBuf是一个字节型数据,它是文件发送和接收时的缓冲区。

dis

dis是DataInputStream型对象,它是由Socket对象得到的输入流。

dos

dos是DataOutputStream型对象,它是由Socket对象得到的输出流。

fDis

fDis是DataInputStream型对象,它是要发送的文件的输入流。

raf

raf是RandomAccessFile型对象,该对象允许设置输出流的位置,以支持断点续传。

running

running是一个boolean型对象,用来表示线程是否在执行。

serverName

serverName是字符串型对象,表示服务器的地址,该对象只有在线程作为发送者时使用。

errorMessage

errorMessage是字符串型对象,表示出错的信息。

fileName

fileName是字符串型对象,表示文件名。

fileSender

fileSender是一个boolean型对象,表示是文件发送者还是文件接收者。

IP

IP是字符串型对象,用来存放目的机的IP地址。

message

message是字符串型对象,用来表示验证信息。

port

port是整型变量,表示连接的端口号。

transFileLength

transFileLength是长整型变量,表示已经传输的文件长度,TransFileManager可以用它来计算传输进度和传输速度

成员方法:

cancelTrans()

该方法用于取消传输

confirmReceiveFile()

该方法用于确认传输文件

参数flag用来表示是否同意传输

参数fileName用来表示保存的文件

参数off用来表示起始传输字节

getFileTransMessage()

该方法用于得到文件传输的基本信息。如:文件发送的目标,端口号等。

getStatus()

该方法返回一个整型变量,表示当前线程的传输状态。

run()

线程的执行方法,该方法中循环执行发送或接收方法,完成文件的发送或接收。

setError()

该方法通过一个字符串型的参数设置错误信息。

stopThread()

该方法用于停止线程的执行。

doPackage()

打包方法,该方法中,根据线程所处的不同状态,对数据加入不同的包头和其他信息,进行打包。

readFromFile()

该方法从要发送的文件中读取一个整型数。

readFromSocket()

该方法从Socket输入流读取一个整型数,它有一个重载版本读取一个字节数组的数据。

receiveFile()

该方法为接收文件的方法,是线程循环中,文件接收者执行的方法。

sendFile()

该方法为发送文件方法,是线程循环中,文件发送者执行的方法。

writeToFile()

该方法写一个字节数据的数据到保存的文件中。

writeToSocket()

该方法写数据到Socket输出流中,它有三个重载版本,分别是写入整型数,写入长整型数和写入字节数组数据。

4.2.5    TransFilePanel类

这个类属于视图类,它作为主界面上的一个对象使用,含有进度条,按钮,标签的对象,用于显示文件传输状态,每一个传输线程都拥有自己的TransFilePanel类对象。

Java 传输GB级文件方法_网络_08

 

成员变量:

fileName

fileName是一个字符串,表示传输文件的文件名。

fileSender

fileSender是boolean型对象,表示是文件发送者还是接收者。

isCanneled

isCanneled是boolean型对象,传输过程中,用户点了取消按钮后,该标志位置true,TransFileManager会循环检测isCanneled标志,当发现其为true后,它会关闭对应的传输线程,而对方会检测到传输错误,文件传输就停止了。

isClosed

isClosed是boolean型对象,它表示当传输过程已经停止时,用户点击了关闭按钮,TransFileManager检测到isClosed为true时,会在列表中去掉对应的传输线程和TransFilePanel。

isConfirm

isConfirm是boolean型对象,它表示文件接收者是否确认了文件接收后(包括同意和拒绝),TransFileManager检测到isConfirm为true时,会将确认状态发给文件发送者。

jbtnCannel

jbtnCannel是取消按钮。

jbtnOK

jbtnOK是确定按钮。

jpgbFileTrans

jpgbFileTrans是文件传输的进度条。

jtaFileTransStatus

jtaFileTransStatus是一个文本框,用来显示文件传输的状态。

transFileLength

transFileLength是一个长整型变量,用来表示已经传输的文件长度。

status

status是一个整行变量,表示文件传输的状态,所表示的状态与SocketThread中的对应。

界面截图

Java 传输GB级文件方法_文件传输_09

 

5 业务流程图

Java 传输GB级文件方法_网络协议_10

Java 传输GB级文件方法_Java 传输GB级文件方法_11

6 旧系统升级策略

本系统未采用升级策略,这只是一个文件点对点的传输,所以只是两用户之间的传输,更新文件需要从开发者网站直接下载。

断点续传描述

软件支持断点续传的功能,该功能主要算法如下:

1、 当文件传输中途停止时,文件接收者程序为接收的文件创建一个以该文件名+.tmp为文件名的临时文件,临时文件与该文件保存在同一个路径下。临时文件中保存文件以传输的字节数和文件的大小。

2、 当文件接收者接收该文件时,如果有对应的临时文件,程序会检测到该文件的临时文件,读取以传输的字节数和文件大小,并且比较传输的字节数与未完成传输的文件大小是否相等,文件大小和发送来的文件大小是否相等,如果都相等,执行3,否则执行4。

3、 将文件的输出流设置到应该继续传输的位置,并将起始传输字节数发给发送者,执行5。

4、 如果有未完成的传输文件,将其删除,执行5。

5、 进行文件传输。

8 性能设计

由于经验不足,此系统性能设计暂不考虑,待以后能力增强时再改进。

9 错误处理

本系统的错误处理方式要符合点对点文件的续传处理的要求:在界面程序中产生的错误统一由JAVA的异常处理机智层层上举方法进行处理,而各数据对象和业务对象产生的错误一律上举。发生在程序开发阶段未考虑到的错误均可由此方法将错误信息详细记录。

10 安全性设计

  1. 用户指定的正确的ip地址。
  2. 用户发送文件的时候有相应的确认信息。
  3. 确认信息还需要对方的确认。

11 ip定义

Ip查询

Ip地址的查询需要上专门的网站进行互联网上的ip的查询,查询出对方的ip地址的互联网上的ip而不是局域网上的ip。比如说专门的ip查询网站www.138ip.com.

12 文件传输的ip确认信息

发送到对方的文件需要对方进行确认。

13 外部数据接口

使用接口的系统

接口名称

输入参数

返回数据

说明

权限管理系统

权限管理

用户名

权限

输入String类型

返回Int类型

文件管理系统

文件管理

文件编号

呈批文件数据表

唯一的文件ID号,Int类型;呈批文件所有信息,表格

14 二次开发工具

用于系统的二次开发的工具有:报表设置工具、文书设置工具、 查询设置工具、平台设置工具。

15 硬件环境

体检管理系统运行所要求的硬件配置要求同“可行性分析报告”一文中的统一规定。

16 软件环境

工作站采用Windows95/Windows98/Windows2000/windowsXP、服务器采用Windows NT 4.0/Windows 2000、SQL SERVER 2000。

17 开发工具

开发工具使用JBUILDER、Erwin

18 第三方软件

ERWIN、JDK-1.4.2、office套件