戴镇玲PP文件共享程序文档格式.doc
- 文档编号:14567026
- 上传时间:2022-10-23
- 格式:DOC
- 页数:21
- 大小:380.50KB
戴镇玲PP文件共享程序文档格式.doc
《戴镇玲PP文件共享程序文档格式.doc》由会员分享,可在线阅读,更多相关《戴镇玲PP文件共享程序文档格式.doc(21页珍藏版)》请在冰豆网上搜索。
一.需求和规格说明
1.课程设计目的
通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的设计方案。
(5)熟练掌握JAVA语言网络编程、输入输出流,灵活运用各种类库。
2.课程设计名称及内容
课程设计名称:
设计内容:
编写一个可以进行点对点的文件共享程序,能够进行网络上的文件共享和传输。
3.任务和要求
该程序软件可以在任何一个标准配置的主机上运行,运行该程序的主机既是客户端,也是服务器端,是一个多线程程序。
作为服务器端,运行一个服务器线程始终监听指定的端口,如果网络上有其他主机要求建立连接,互相交换共享文件信息,双方就可以互相下载对方共享的文件。
4.设计方案提示
程序中的端口可以设置的高些,因为很多的低端端口被系统所使用。
可以使用JAVA中的Socket对象中的getInputStream方法和getOutputStream方法来传输数据流。
5.相关背景
可以说文件交换的需求直接引发了P2P技术热潮。
在传统的WEB方式中,要实现文件交换需要服务器的大力参与,通过将文件上传到某个特定的网站,用户再到某个网站搜索需要的文件,然后下载,这种方式的不便之处不言而喻。
电子邮件是方便了个人间文件传递问题,却没法解决大范围的交换。
这也是WEB的重要缺陷,P2P就是在情况下横空出世。
P2P很好的解决了传统的C/S模式下瓶颈问题,让资源共享变的更方便,快捷。
用户直接和用户之间进行数据交换,改变了传统的模式。
在理论上,本课题探寻文件共享的基础理论——知识管理理论、计算机网络、分布式存储和心理学——相关研究成果的新结合点,研究在现有理论基础上如何更好的满足人们文件共享的需求,采用分布式、高效的基于P2P技术构建的文件共享网络这种文件共享模式,并明确提出了P2P文件共享网络的整个架构,同时,提出了一个P2P环境下维护数据一致性和可用性的算法;
在实践上,课题要实现了一个简单的P2P知识共享网络的框架,给出了原型实现,经过小范围的实验和部署,能够证明P2P文件共享网络能够提供很高的可用性,并且文件共享的效果也应该很好。
二.程序设计
1.设计思想:
P2P即PeertoPeer.称为对等连接或对等网络。
它打破了传统的Client/Server(c/s)或B(Browser)/S(Server)模式.在网络中的每个结点的地位都是对等的。
每个结点既是客户机.也是服务器。
P2P具有非中心化、可扩展性、健壮性、高性能,价格比、隐私保护、负载均衡等优点.并被广泛地运用到ICQ类的即时通信软件、Farsite(Microsoft)/OcellSStore类数据存储软件、Napstor类数据共享软件、Infrasearch、Pointera类数据搜索及查询软件、Netbateh(Inte1)类协同计算软件、Groove类数据或行动协同软件、游戏软件等领域的开发与研究。
P2P文件共享系统从功能上分为如下四个部分。
(1)在本机转移文件:
在本地上既运行客户端,又运行服务器端,这时可以实现文件的转移。
(2)给异机传输文件:
本地运行客户端,另一主机运行服务器端,可以将文件传输给本地局域网的客户端主机。
2.设计表示:
1)布局
本程序需要用到图形界面,所以要牵涉到布局设计。
Server端程序中用到了两种布局类,及GridLayout和BorderLayout类。
其中,我定义了两个三个面板,分别为Jpaneljp1,jp2,jp3.用BorderLayout类将他们一次分布与JFrame的North,Center和South。
jp1上增加在增加Jlabel,jp2上增加两个按钮Jbutton1,Jbutton2,用于选择文件和发送。
最后在jp3上增加进度条。
Client端程序布局更为复杂,其jp3与server端相同,jp1,jp2与之有差异。
多了一个JtextField用于填写IP地址,和一个Jbutton用于确定ip地址,jp2多了一个JTextField用于提示Server端共享的文件名,并提示下载。
2)进度条
为了更加形象具体,还加入了水平进度条。
3)窗口选择器
由于本程序是图形界面,用户可以用类似与windows种的对话窗口来选择以保存的所选的文件。
4)关于网络的net类
本程序是P2P文件共享,是运行于网络平台的软件。
故一定会用到net类。
其中文件传输是,用Socket和ServerSocket两个类就可以模拟出服务端和客户端之间文件的共享与传递。
5)输入输出流
因为本程序最根本是对文件操作,固然少不了输入输出流。
另外,为了提高传输的效率,又设了相当容量的缓冲区。
服务器端先将待传递的数据都写入预先设定好的缓冲区中,当缓冲区满后一次性传输出去。
然后将余下的数据继续写入已经空的缓冲区,如此反复,直到文件结尾。
客户端接收数据的过程与之相似。
只是将传来的数据先写入缓冲区,待缓冲区满后再将缓冲区中的数据一次性写入到指定的文件中。
3.实现注释:
对于题意要求的在任何一个标准配置的主机上运行,运行该程序的主机既是客户端,也是服务器端,是一个多线程程序。
作为服务器端,运行一个服务器线程始终监听指定的端口,如果网络上有其他主机要求传输一个文件,运行客户端双方就可以传递文件功能已基本实现。
4.详细设计表示:
主要算法的框架及实现此算法的成员函数接口。
4.1系统用户界面设计
服务器端主要是用来发送文件的,使用其基本界面依据所要实现的功能为其设计的界面包括浏览(选择所要发送的文件),发送(确定发送开始,激活接口),进度条(显示发送的进度)
4.2系统初始化
4.2.1导人JAVA基本类
importjava.awt.event.*;
//提供处理由AWT组件所激发的各类事件的接口和类
importjava.awt.*;
//创建用户界面和绘制图形图像的所有类
importjavax.swing.*;
//提供一组“轻量级”(全部是Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。
importjavax.swing.event.*;
//供Swing组件触发的事件使用
importjava.io.*;
//通过数据流、序列化和文件系统提供系统输入和输出
import.*;
//为实现网络应用程序提供类。
4.2.2初始化系统界面
publicclassServerextendsJFrameimplementsActionListener,WindowListener
{
JButtonjb0;
JButtonjb1;
//按钮
JPaneljp;
JPaneljp1;
JPaneljp2;
//面板
JFileChooserjfc;
//文件选择器
JTextFieldjtf;
//轻量级组件,它允许编辑单行文本
Stringst;
//记录文件的路径
JProgressBarjpb;
//进度条
Timertimer;
//时间器
publicServer(Stringtitle)//启动服务器端的构造器,为其定义标题
{
super(title);
try{
UIManager.setLookAndFeel("
com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
);
//使用LookAndFeel对象设置当前的默认外观
}
//捕获异常事件
catch(ClassNotFoundExceptione){
e.printStackTrace();
} //如果无法找到LookAndFeel类
catch(InstantiationExceptione){
}
//如果无法创建一个该类的新实例
catch(IllegalAccessExceptione){
}//如果该类或初始化程序不可访问
catch(UnsupportedLookAndFeelExceptione){
//如果lnf.isSupportedLookAndFeel()为false
//进度条
jpb=newJProgressBar();
//将进度条设为不确定模式
jpb.setOrientation(JProgressBar.HORIZONTAL);
jpb.setMinimum(0);
//最小为0%
jpb.setMaximum(100);
//最大为100%
jpb.setValue(0);
//初始化值为0
jpb.setStringPainted(true);
//true确定进度条是否应该呈现进度字符串
timer=newTimer(50,this);
//时间间隔
this.setLayout(newBorderLayout());
jp=newJPanel();
jp1=newJPanel();
jp2=newJPanel();
jfc=newJFileChooser();
jtf=newJTextField("
请选择待传送的文件"
jb0=newJButton("
浏览"
jb1=newJButton("
发送"
jp1.setLayout(newGridLayout(1,1));
jp1.add(jtf);
jp.setLayout(newGridLayout(2,1));
jp.add(jb0);
jp.add(jb1);
jp2.setLayout(newGridLayout(1,1));
jp2.add(jpb);
this.add(jp1,"
North"
this.add(jp,"
Center"
this.add(jp2,"
South"
this.addWindowListener(this);
jb0.addActionListener(this);
jb1.addActionListener(this);
}
public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 戴镇玲 PP 文件 共享 程序