这个是我做的另一个毕业设计,使用的最基本的socket通信实现文件传输,使用该程序可同时给多个人发送不同的文件并支持断点续传。由于只为毕业设计而写的,只实现了功能,没有在速度上优化,发上来只为给要做类似程序的朋友做个参考。以下是毕业论文中的节选。
源代码已经上传了。
第3章 设计文档
3.1 任务概述
本项任务要开发一款P2P文件传输软件,该软件可以在局域网和互连上使用,具有文件传输,断点续传,多线程连接等功能。
3.1.1 开发背景
随着网络的普及,在网络中交换信息,特别是文件成为使用网络时经常性工作,现有的文件传输工具如QQ、MSN等,主要功能是作为即时通讯工具使用,而且在局域网中使用时仍需连接到互连网。本文开发的软件基于P2P结构实现文件传输,不依靠服务器维护用户资料,所以,只要两台机器可以连通,就可以进行文件传输。
3.1.2 定义
P2P:即peer-to-peer,可以理解为点对点,或对等传输的意思。
3.1.3 开发工具
开发采用JAVA语言,开发工具为jbuilder 2005
3.2 文件传输业务流程
3.2.1 通讯顺序关系
在文件传输时,传输过程可以简单的分为4步,如图 :
1、由文件发送者发起文件传输,他首先发送文件名,文件大小,验证消息等信息给文件接收者。
2、文件接收者收到文件信息和发送者信息,决定是否接收,如不接收,则发送拒绝接收消息给文件发送者,文件传输结束。如同意接收,发送同意接收消息和文件传输起始字节(用于断点续传)给发送者。
3、发送者开始发送文件数据包,直到最后一个文件数据包,发送者在最后一个文件数据包上加上标记。
4、接收者识别最后一个文件数据包,文件传输成功。
3.2.2文件发送端的详细业务流程
图中显示了发送文件时的详细业务流程。
1、首先,要选择要发送的文件,可以选择一个文件或同一个文件夹下的多个文件发送,当选择多个文件时,软件将为每个文件建立一个传输线程。选择文件后,发送者要填写目标IP和端口,由于是基于P2P的文件传输,不存在服务器维护好友列表,所以需要知道目标IP才能传输文件,用户也可以填写验证消息用于描述自己的身份和文件的介绍。
2、发送者收到确认包,判断是否接收文件,如果不接收,则传输结束,如果接收,则打开要发送的文件,设置起始传输字节。
3、发送者读取一个文件片段,加入是否是最后一个文件片段的标志,打包发给接收者。
4、发送完最后一个文件片段时,文件传输结束。
3.2.3 文件接收者详细业务流程
1、 从一打开软件开始,监听线程就会启动,这时用户就扮演者文件接收者的角色,当有文件发送者发来请求时,监听线程建立与发送者的连接,并创建传输线程,接收者得到发送者传来的文件信息和验证消息,用户还能得到发送者的IP地址,用户根据这些信息决定是否接收文件,并发送确认包给发送者,确认包里包含了是否接收的标志,和开始传输的起始字节。
2、 接收者开始接收数据包,解包,写入文件中,直到最后一个文件片段,关闭文件,文件传输结束。
3.3 软件的传输协议设计
为了更好的控制文件传输的流程,开发设计了文件传输协议,该协议属于应用层协议,为了不使传输过程过于复杂,协议尽量简单设计。主要的内容是传输包的