基于P2P的文件共享系统毕业设计

合集下载

P2P文件共享系统的设计

P2P文件共享系统的设计

P2P文件共享系统的设计作者:叶晓琼来源:《电脑知识与技术·学术交流》2008年第30期摘要:系统Qt P2P file-sharing System (QPS)是利用Qt开发的P2P文件共享系统。

QPS采用P2P中的混合模式,此模式结合了集中目录式和纯分布式两者的优点,在实现上具有简易性,在共享度上具有很强的扩展性。

QPS的最大特点是加入了策略。

这种策略能限制一些用户只下载而不共享资源的行为。

策略的引入是为了鼓励用户与其他人分享自己的资源,而不仅仅是索取。

入策略的QPS不仅能比较有效的限制只下载不分享的行为,而且对系统的寿命也有相当程度的提高。

关键词:文件共享;P2P;策略;Qt中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)30-0633-03The Design of a P2P File Ssharing SystemYE Xiao-qiong(Xianning Vocational Technical College, Xianning 37100, China)Abstract: QPS is a peer-to-peer file sharing system implemented in Qt. It uses a mediated-based mode. This mode combines the strengths of centralized-directory mode and purely-distributed mode, and can be implements simply and has strong expansibility on the share pitch. The most favorable characteristic of QPS is that it introduces a strategy, which can restrict the free rider behavior of users who only download file but not share any. The purpose of the strategy is to encourage users to share their resources with others but not only ask for.With the strategy as described above, QPS can not only restrict downloading but also increase its lifetime.Key words: file sharing system; P2P; scheme; Qt1 引言C/S式架构造就了一批著名的门户网站,如雅虎,新浪等。

基于P2P的视频共享系统的设计与实现的开题报告

基于P2P的视频共享系统的设计与实现的开题报告

基于P2P的视频共享系统的设计与实现的开题报告
1.研究背景与意义
随着互联网技术的不断发展,视频共享已成为当今互联网应用重要的组成部分,能够充分满足用户对于视频内容的需求。

在传统的视频共享系统中,视频数据存储于服务器,由服务器向所有客户端提供服务。

在用户访问量较大时,服务器往往会面临巨大的负担,导致传输速度较慢,服务质量下降等问题。

而基于P2P的视频共享系统则能够解决这些问题,分散了服务器的负载,提高了服务的稳定性和可靠性。

2.研究内容与方法
本文将研究基于P2P的视频共享系统的设计与实现,主要包括以下内容:
(1) 系统结构设计:本文将以分布式系统理论为基础,设计P2P网络的结构,实现用户随机访问和信息交换。

(2) 协议设计:P2P协议是P2P网络功能实现的关键。

本文将研究目前P2P协议的各种方法,包括纯P2P方法、混合P2P方法等,综合各种方法合理设计协议。

(3) 数据传输与缓存技术:P2P网络使用广泛的数据传输技术包括BT、Emule等,在此基础上,本文将研究相应的缓存技术实现,提高传输效率。

3.预期结果与意义
通过本文的研究,将可以完成基于P2P的视频共享系统的设计与实现,实现视频共享的高效稳定,并可以应用于各种在线视频应用中,如在线教育、在线影视、在线直播等。

同时本研究对P2P网络技术的研究也具有一定的参考意义。

基于P2P网络的内容共享模式研究

基于P2P网络的内容共享模式研究

基于P2P网络的内容共享模式研究一、前言P2P网络是指点对点网络,是一种分布式的计算机网络结构,也是互联网的重要组成部分。

在P2P网络中,每个节点具有相同的能力,可以作为数据的提供者和请求者共同参与数据的传输和共享。

随着网络技术和设备的不断发展,P2P网络成为了一种流行的内容共享模式,在实际应用中得到了广泛的使用和推广。

本文将围绕基于P2P网络的内容共享模式展开研究,主要包括该模式的定义、优势、技术原理以及安全性等方面的分析。

二、基于P2P网络的内容共享模式定义基于P2P网络的内容共享模式是指利用点对点网络结构,将各个节点上的资源(如文件、软件、音乐、视频等)共享,并通过P2P网络的技术手段,实现内容的快速传输和共享。

该模式具有高效、安全、节省带宽、无中心化等特点,已成为一种流行的内容共享方式,在互联网上得到广泛的应用。

三、基于P2P网络的内容共享模式优势1.高效性:基于P2P网络的内容共享模式能够利用网络中的所有资源和带宽,实现数据的快速共享和传输,能够更好的满足用户的需求。

2.节省带宽:传统的内容共享方式需要采用服务器集群等高昂的硬件设备来实现数据的传输和共享,而P2P网络则可以有效的节省这些硬件设备的成本。

3.去中心化:基于P2P网络的内容共享模式没有中心化的服务器,每个节点都具有相同的能力,可以作为数据的提供者和请求者,确保了共享数据的可靠性。

4.低成本:基于P2P网络的内容共享模式不需要专门的服务器来存储数据,可以充分利用各节点的空闲资源,这样可以有效的降低成本,提高效率。

五、基于P2P网络的内容共享模式技术原理基于P2P网络的内容共享模式的技术原理主要包括四个方面:节点的发现、资源的搜索、资源的下载和上传。

1.节点的发现:在P2P网络中,每个节点都应该能够发现其他节点。

节点的发现主要通过向周围的几个节点发送“hello”消息,得到响应后建立连接,最终连接到整个网络。

2.资源的搜索:在P2P网络中,每个节点都具有特定的资源,其他节点可以通过网络查找需要的资源。

0704031006-戴镇玲-P2P文件共享程序

0704031006-戴镇玲-P2P文件共享程序

合肥学院计算机科学与技术系课程设计报告2010~2011学年第一学期课程JA V A课程设计课程设计名称P2P文件共享程序学生姓名戴镇玲学号0704031006专业班级07网络工程1班指导教师许强、张贯虹2010年9月一. 需求和规格说明1.课程设计目的通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的设计方案。

(5)熟练掌握JAVA语言网络编程、输入输出流,灵活运用各种类库。

2.课程设计名称及内容课程设计名称:P2P文件共享程序设计内容:编写一个可以进行点对点的文件共享程序,能够进行网络上的文件共享和传输。

3.任务和要求该程序软件可以在任何一个标准配置的主机上运行,运行该程序的主机既是客户端,也是服务器端,是一个多线程程序。

作为服务器端,运行一个服务器线程始终监听指定的端口,如果网络上有其他主机要求建立连接,互相交换共享文件信息,双方就可以互相下载对方共享的文件。

4.设计方案提示程序中的端口可以设置的高些,因为很多的低端端口被系统所使用。

可以使用JAVA中的Socket对象中的getInputStream方法和getOutputStream方法来传输数据流。

5.相关背景可以说文件交换的需求直接引发了P2P技术热潮。

在传统的WEB方式中,要实现文件交换需要服务器的大力参与,通过将文件上传到某个特定的网站,用户再到某个网站搜索需要的文件,然后下载,这种方式的不便之处不言而喻。

电子邮件是方便了个人间文件传递问题,却没法解决大范围的交换。

基于P2P的局域网多线程共享软件设计论文

基于P2P的局域网多线程共享软件设计论文

基于P2P的局域网多线程共享软件设计论文基于P2P的局域网多线程共享软件设计论文1 系统概述本系统的主要功能其一,局域网下的文件P2P共享,这里包括文件的传输和文件列表的传输;其二,局域网下用户的P2P心跳检测。

系统的特点是多线程多任务同步。

2 设计思想下面将从两个大模块来介绍设计思路,首先是文件的收发,然后是文件列表的收发和心跳模块,如图1所示。

2.1 文件收发模块文件的收发是resource-shaie最基本的功能,也是最核心的功能。

2.1.1 有关文件收发的Socket的分类因为这里采用的是TCP协议,所以在程序中,大体上存在于3组Socket,与文件收发有关,一组Socket是welcomesocket,用于监听连接的到来,并Accept;另一组Socket,是数据传输的Socket,来自于welcomesocket的accept(),用于send文件数据给对等方,姑且称作sendsocket;最后一组Socket也是数据传输的socket,通过connect()对等方的welcomesocket得到,与上面那个sendsocket是直接相连的,只是因为所面对的对象不同,对于当前对等方,因为这个Socket的用于recover文件,姑且称作recvsocket。

可以这样理解,对于一个对等方来说,sendsocket就只send(),recvsocket就只recover ()。

之所以这样分开,是为了方便管理,降低耦合度,使得两个对等方之间的所直接相连的一对sendsocket和recvsocket在一个文件任务中维系关系,也就是说,一对socket,在同一时间只共同执行一个任务,一边是发和一边是收。

然而,如果全在一个Socket中send和recv,就会变得很乱,一个socket就可能牵连多个任务,一个socket出了问题,可能几个任务的收发都会失败。

下面举一个例子来具体说明为什么要这样分类。

一种新颖的P2P文件共享系统的动力学模型

一种新颖的P2P文件共享系统的动力学模型

一种新颖的P2P文件共享系统的动力学模型P2P文件共享系统是一种用于在线文件共享的技术,它允许在不同网络上的用户之间共享文件。

P2P系统的原理是在不同的计算机之间建立点对点(Peer-to-Peer)连接,以便能够实现文件传输。

在传统的分布式文件共享网络中,每个用户都必须与其他用户建立独立的连接,以便在之间传输文件。

但是,在P2P文件共享系统中,每个用户都可以充当文件服务器,帮助其他用户下载文件。

在传统的P2P文件共享系统中,每个用户都可以供给和下载文件。

这就意味着,虽然这些系统可以非常快速地传输文件,但是它们需要很多带宽和存储空间。

这就会导致用户的带宽和存储资源被浪费,以及可能让一些用户失去积极参与的动力。

为了满足这种需求,研究人员们设计了一种新型的P2P文件共享系统,采用了更高级的动力学模型来提高系统的效率和公平性。

该新型P2P文件共享系统使用“激励策略”,以鼓励用户积极参与共享。

激励策略的基本原则是让用户能够根据自己在系统中的活动量获得奖励,从而增加他们参与共享文件的动力。

用户可以通过分享、下载和上传文件等方式获得奖励,并且可以贡献自己的带宽和存储资源,同时也可以使用其他人的带宽和存储资源。

激励策略的好处在于,它提供了一种公正合理的系统,以鼓励大家平等地分享和使用文件。

该系统建立的动力学模型基于一系列的元素和规则,该动力学模型描述了用户在系统中的行为和相互作用。

用户的活动取决于他们收到的激励,以及他们的实际贡献。

如果一个用户接收到很少的激励或感觉到其他用户没有真正积极共享,那么他便有可能离开系统或不再积极参与共享。

类似地,如果一个用户获得了很多的激励或感觉到其他用户真正积极共享,那么他就有可能继续留在系统中,继续参与共享行为。

总的来说,这种动力学模型建立了一个互相连通的共享系统,它允许用户在其中相互分享和访问文件,从而获得一些奖励与激励。

新型的P2P文件共享系统是一种高效、公平的解决方案,可以节省用户的服务器成本,并且可以提高大家对共享的积极性。

P2P文件共享系统

P2P文件共享系统

CMS提供的接口
1.SearchListener类:针对到本机上的搜索请 求进行相应; 2.ContentManager类: 可以共享文件和取消 文件共享。 3.ListContentRequest类:发送文件搜索请求 4.GetContentRequest类:文件下载请求类
接口介绍(一)
一、SearchListener接口 public void queryReceived()


将要推荐介绍的五款P2P下载软件分别为:PP点点通、 百宝、BitTorrent Plus!II、酷狗(KuGoo)、电骡 (eMule)。这几款软件在05年度,同时在线人数、下载次 数、注册用户等都是排在前列的,而且各软件都有自己特 点,都适合不同的用户群。下面就跟随笔者来了解一下各 个软件的功能与使用。 05年P2P最为火爆的一年,网络上到处都可以看到P2P 下载的身影,从大型的软件到刚刚上映的电影。虽然,这 些给网友带来了极大的快感,但是也让更多版权人士把 P2P作为眼中钉。现在,美国方面已经开始整顿P2P市场, 比较知名的P2P软件“电驴”就在这场整顿中消失在美国 的网络中。从中我们可以看到P2P的快感背后也不是那么 风平浪静,今天可能是“电驴”明天呢?P2P这种优秀的 文件传输方式难道就因为这个问题而会消亡在06年吗……
对象
类型
属性名 JPanel JPanel JLabel JTextField JList Text Text Text Text Border
二,P2P的现状

P2P(peer-to-peer)已经不是什么新概念,现在已经有 着无数网民使用着基于P2P技术开发的文件共享、网络交 流等软件。P2P可以理解为“伙伴对伙伴”的意思,或称 为对等联网。目前人们认为P2P在加强网络的交流、文件 交换、分布计算等方面大有前途。 就给大家介绍几款05年比较火热的P2P下载软件,无 论是下载MP3、电影、综艺节目、球赛还是软件,甚至一 些在互联网中搜索不到的资源,这些软件都可以达到你的 要求,让你真正享受到P2P点对点技术给你带来的乐趣。

一种基于P2P 的局域网文件共享工具

一种基于P2P 的局域网文件共享工具
此时, 在用户的在线用户树中就会显示有多个在线的用 户。 当用户点击相应用户的头像时,用户就向该用户发送一个 文件列表请求包 (TCP 发送),用户接 收 到 文 件 列 表请 求 ,通 过 查找本机的共享路径,将共享文件夹中的文件相应信息,包括 文件大小、文件名、创建时间、修改时间等,通过一个数组,发送 给请求方。
第8卷%第11期 2009年 11月
软件导刊 Software Guide
Vol.8 No.11 Nov. 2009
一种基于 P2P 的局域网文件共享工具
曹煦晖
(集美大学 计算机工程学院,福建 厦门 361021)
摘 要:设计并实现了一种基于 P2P 传输的文件共享方案,采用 Windows 下 socket 进行通信,通过 MFC 进行了界面
在文件传输前,请求下载方首先要发出“是否需要验证”的 询问,接收方回复需要验证或者不需要。如果需要验证,则用户 如果之前保存了密码,则直接提取保存的密码进行回复,否则 弹出密码对话框,进行密码输入。接收方则验证密码的正确性。 通过验证后才能进行正确的文件传输。 文件传输过程中,文件 发送端创建一个新的线程专门进行文件的传输工作。文件接收 端则用异步消息机制进行文件数据块的接收。
表 1 主机与虚拟机间传输
传输方式
传输量
TCP 无确认帧传输
一次传 4096B
飞鸽传书
传输 737.1M,用时 483s
用本程序传
一次传 4096B
传输速度 3.83M/s 1.526M/s 1.4M/s
表 2 两台主机与主机之间传输
传输方式
传输情况
CPU 和内存占有量
701.9M/73s 发送端 CPU 9 内存 1848 接收

基于P2P的文件共享系统毕业设计

基于P2P的文件共享系统毕业设计

1 绪论1.1 论文课题概述1.1.1 课题背景可以说文件交换的需求直接引发了P2P技术热潮。

在传统的WEB方式中,要实现文件交换需要服务器的大力参与,通过将文件上传到某个特定的网站,用户再到某个网站搜索需要的文件,然后下载,这种方式的不便之处不言而喻。

电子邮件是方便了个人间文件传递问题,却没法解决大范围的交换。

这也是WEB的重要缺陷,P2P就是在情况下横空出世。

P2P很好的解决了传统的C/S模式下瓶颈问题,让资源共享变的更方便,快捷。

用户直接和用户之间进行数据交换,改变了传统的模式。

1.1.2 课题目的和意义本课题最终成果是完成一个基于P2P的文件共享系统。

该系统可以发现网络上的共享资源,并根据自己的需求下载自己需要的资源。

在传输过程中还要保证数据传输的完整和安全。

本课题的基础是文件共享和P2P理论,涉及到知识管理、计算机网络、分布式存储和心理学等领域相关理论。

针对不同的应用需求,人们提出了许多共享方式,以不同的方式来共享不同的内容以满足人们的需求。

但是这些方法都不够全面,没有提出很好的文件共享模式,更加没有很好的解决文件共享的需求。

特别是在信息飞速增长的年代,人们对于信息的筛选即真正知识的共享的需求越来越强烈,而人类社会发展至今,亦未能找到很好的文件共享的模式和手段。

在理论上,本课题探寻文件共享的基础理论——知识管理理论、计算机网络、分布式存储和心理学——中相关研究成果的新结合点,研究在现有理论基础上如何更好的满足人们文件共享的需求,采用分布式、高效的基于P2P技术构建的文件共享网络这种文件共享模式,并明确提出了P2P文件共享网络的整个架构,同时,提出了一个P2P环境下维护数据一致性和可用性的算法;在实践上,课题要实现了一个简单的P2P知识共享网络的框架,给出了原型实现,经过小范围的实验和部署,能够证明P2P文件共享网络能够提供很高的可用性,并且文件共享的效果也应该很好。

此外,通过编写此系统,我又进一步熟悉了网络体系结构,TCP/IP协议的知识,熟练掌握了Socket编程,MFC编程,多线程编程,掌握了利用VC++进行网络开发的过程和步骤,为今后从事软件行业奠定了基础。

P2P文件共享程序——面向对象综合设计报告

P2P文件共享程序——面向对象综合设计报告

合肥学院计算机科学与技术系课程设计报告2012~2013学年第一学期课程JAVA语言课程设计名称P2P 文件共享程序学生姓名学号1104014002专业班级11计算机科学与技术4班指导教师张贯虹、胡春玲2013 年1月一.设计题目及具体要求编写一个可以进行点对点的文件共享程序,能够进行网络上的文件共享和传输。

该程序软件可以在任何一个标准配置的主机上运行,运行该程序的主机既是客户端,也是服务器端,是一个多线程程序。

作为服务器端,运行一个服务器线程始终监听指定的端口,如果网络上有其他主机要求建立连接,互相交换共享文件信息,双方就可以互相下载对方共享的文件。

二.总体设计思路本程序仅有一个P2P.java的源码文件。

该文件中共有有四个类:P2P、suface、receive、send。

其中P2P为主类,程序启动后,由P2P中主函数public static void main(String args[])实例化一个surface对象。

Surface继承自frame类,并实现ActionListener接口,由它实现窗口界面与事件响应,并与用户交互。

Surface根据用户作出的具体操作选择(接收或分享)启动一个receive或send线程,由最终由receive线程对象完成接收操作,由send线程对象完成分享操作。

三.具体设计全局流程图:本程序涉及成员变量与方法名称种类功能从属sur surface类对象用户交互P2P main 主方法程序执行入口P2Pgb GridBagConstraints类对象自定义界面网格布局surfacegbl GridBagLayout类对象网格布局surfaceb1\b2\b3 \b4 Button类对象界面按钮surfacel1\linfo\si nfo Label对象标签,显示信息surfacetf TextField类对象文本框,输入对方IP地址surfacesfile\lfile string类对象文件名,存储文件位置surfac eload\save filedialog类对象打开\保存文件对话框surfaceiss; 布尔值记录用户选择分享\ 接收surfac esurface() surface类构造方法——surfaceactionPer formed()ActionListener接口中方法实现事件响应并启动线程surfacese\re send\receive类线程对象实现分享\接收功能surfaces socket类对象发起连接receive\sendfile file类对象表示进行I\O操作的文件receiv e\sendstr int值方便数据I\Oreceiv e\sendra InetAddress值表示对方IP地址receiv e\sendss ServerSocket类对象监听端口,接收连接receive\sendin InputStream输入流receiv类对象 efos FileOutputStream类对象文件输出流receivebos BufferedOutputStream 缓冲流receivereceive receive构造方法接收文件位置等参数receiveout OutputStream类对象输出流sendfis FileInputStream类对象文件输入流sendbis BufferedInputStream缓冲流send send send send send 用户交互模块:public void actionPerformed(ActionEvent e){if(e.getActionCommand()=="分享"){//用户选择分享load =new FileDialog(this,"请选择需要分享的文件", FileDialog.LOAD);load.show();//弹出文件对话框lfile = load.getDirectory()+ load.getFile();iss =true;//记录“分享”选择}if(e.getActionCommand()=="接收"){//用户选择接收save =new FileDialog(this,"请选择存放文件位置及文件名", FileDialog.SAVE);save.show();//弹出文件对话框sfile = save.getDirectory()+ save.getFile();iss =false;//记录“接收”选择}if(e.getActionCommand()=="本机接受连接"){if(iss){//若用户事先选择“分享”send se =new send(new File(lfile));se.start();//启动分享线程l1.setText("开始分享");}else{//若用户事先选择“接收”l1.setText("开始接收");receive re =new receive(new File(sfile));re.start();//启动接收线程}}if(e.getActionCommand()=="本机发起连接"){if(iss){//若用户事先选择“分享”send se;l1.setText("开始分享");try{se =new send(new File(lfile),InetAddress.getByName(tf.getText()));se.start();//启动发送线程}catch(UnknownHostException e1){l1.setText("输入地址有误!");}}else{//若用户事先选择“接收”receive re;l1.setText("开始接收");try{re =new receive(new File(sfile),InetAddress.getByName(tf .getText()));re.start();//启动接收线程}catch(UnknownHostException e1){l1.setText("输入地址有误!");}}}}}接收模块:class receive extends Thread {Socket s;File file;InputStream in;FileOutputStream fos;BufferedOutputStream bos;int str;InetAddress ra;receive(File file, InetAddress ra){//本地发起连接时构造方法(接收对方地址)this.file = file;this.ra = ra;}receive(File file){//本地接收连接时构造方法this.file = file;}public void run(){try{this.fos =new FileOutputStream(file);//建立文件输出流}catch(FileNotFoundException e1){surface.rinfo.setText("文件打开失败!");}try{this.bos =new BufferedOutputStream(fos);if(ra ==null){//若未得对方地址,表示本机接收连接ServerSocket ss =new ServerSocket(9999);//监听端口9999 s = ss.accept();}else//否则本机发起连接s =new Socket(ra,9999);in = s.getInputStream();while((str = in.read())!=-1)//读入输入流直至末尾bos.write(str);surface.rinfo.setText("接收成功!");bos.close();fos.close();in.close();s.close();}catch(IOException e){surface.rinfo.setText("接收失败!");}}}分享模块:class send extends Thread {Socket s;File file;int info;OutputStream out;FileInputStream fis;BufferedInputStream bis;int str;InetAddress ra;send(File file, InetAddress ra){//本地发起连接时构造方法(接收对方地址)this.file = file;this.ra = ra;}send(File file){//本地接收连接时构造方法this.file = file;}public void run(){try{this.fis =new FileInputStream(file);//建立文件输入流}catch(FileNotFoundException e1){surface.sinfo.setText("文件打开失败!");}try{this.bis =new BufferedInputStream(fis);if(ra ==null){//若未得对方地址,表示本机接收连接ServerSocket ss =new ServerSocket(9999);//监听端口9999 s = ss.accept();}else//否则本机发起连接s =new Socket(ra,9999);out = s.getOutputStream();while((str = bis.read())!=-1)//读入缓冲输入流直至末尾out.write(str);surface.sinfo.setText("分享成功!"); bis.close();fis.close();out.close();s.close();}catch(IOException e){surface.sinfo.setText("分享失败!");}}}1.程序启动界面2.接收成功界面3.分享成功界面4.对方IP输入有误,传输失败。

P2P文档共享软件设计文档

P2P文档共享软件设计文档

P2P文档共享软件设计文档服务端实现服务端的实现主要用到Java Socket编程,服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。

首先ServerSocket 将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。

这样就有两个Socket了,客户端和服务端各一个。

Java中ServerSocket是处理通信实体连接请求的类,ServerSocket 对象用于监听来自客户端的请求,在ServerSocket对象包含一个监听来自客户端连接请求的方法,Socket accept( )。

服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。

Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。

因此文件共享系统的实现的数据库设计如下:表user用来存储用户的用户名、密码、ip地址以及是否在线等信息。

表名:user用户上传资源的时候需要向服务端上传的信息包括文件名称、文件尺寸、文件路径以及上传人的id。

表名:resource由于使用BufferedReader的方法读取数据时,在该方法成功返回之前,线程被阻塞,程序无法继续执行。

服务器端主程序监听某一个端口,客户端发起连接请求,服务器端主程序接收请求,同时构造一个线程类,用于接管会话,当一个Socket会话产生后,这个会话就会交给线程进行处理,主程序继续进行监听。

因此服务端应该为每个Socket单独启动一个线程,每个线程负责与一个客户端进行通信。

在服务端中代码中,如果收到一个来自客户端的连接请求,类myServer 负责实现创建Socket连接,并且为该客户端用户分配一个线程。

当客户端、服务端产生了对应的Socket连接之后,就可以通过各自的Socket进行通信,Socket提供了两个方法来获取输入流和输出流InputStream getInputStream() 和OutputStream getOutputStream()。

P2P文件共享系统的设计与优化

P2P文件共享系统的设计与优化

P2P文件共享系统的设计与优化随着互联网技术的不断发展,P2P(Peer-to-Peer)文件共享系统已经成为人们在互联网上分享和交换文件的主要手段之一。

其实现方式是通过将文件分为多个小块,并将这些小块分别上传到各个用户的计算机中,这样就可以利用所有用户的计算能力和硬盘空间来完成文件的共享。

在这篇文章中,我们将探讨P2P文件共享系统的设计和优化。

一、P2P文件共享系统的基本原理P2P文件共享系统的基本原理是通过将文件划分为多个相等的小块,在不同的计算机之间进行分发和共享。

用户只需要从系统中下载一个文件的某个块,就可以从其他用户的计算机上下载其他块,以此来实现文件的下载。

同时,P2P文件共享系统通过利用分布式算法来协调用户之间的通信和数据传输。

通过这种方式,可以在不需要中央服务器的情况下,实现高效的文件共享和数据传输。

二、P2P文件共享系统的优点1.高效性:P2P文件共享系统可以利用所有参与共享的用户的计算能力和硬盘空间来进行文件下载和上传。

这样,在大量用户同时进行文件共享时,文件下载的速度会更快。

相对于传统的文件下载方式,P2P文件共享系统可以显著提高文件传输的速度和效率。

2.可扩展性:P2P文件共享系统可以通过添加新的用户来扩展自身的能力。

这意味着,P2P文件共享系统可以在不需要增加中央服务器的情况下,实现无限的扩展。

3.便携性:P2P文件共享系统可以在不受时间和地域限制的情况下进行文件共享。

这意味着,用户可以从任何地方使用P2P文件共享系统来下载所需的文件。

三、P2P文件共享系统的设计P2P文件共享系统的设计包括两个方面:文件的分块和节点的选取。

1.文件分块文件的分块是P2P文件共享系统设计的重要一环。

文件分块越细,可以提供更多的下载并行度,加快文件的共享速度。

同时,为了避免小块的过多交互,因此选择适当大小的块非常重要。

同时,为了保证下载效率,需要考虑到下面几个问题:(1)块大小应该在合理的范围内。

基于P2P的WEB文件共享系统的研究与实现的开题报告

基于P2P的WEB文件共享系统的研究与实现的开题报告

基于P2P的WEB文件共享系统的研究与实现的开题报告一、选题的意义如今,随着互联网的普及,大量的信息和数据被存储在网络上。

对于这些数据,一个常见的需求是将其共享给其他用户。

目前存在的文件共享方式一般分为两种:一种是集中式的文件共享方式,另一种是分布式的文件共享方式。

其中,集中式方式的共享系统存在单点故障和中心化(一般为服务器)压力等问题,而分布式共享系统却面临着网络拓扑结构和数据一致性等问题。

基于P2P的WEB文件共享系统则可以避免以上问题,实现文件的高效共享。

二、研究的内容1. P2P技术的研究:P2P(Peer-to-Peer)技术是一种点对点的网络通信模式,它能够实现灵活的通信结构,这种技术是基于对等网络的思想。

因此,本研究将对该技术进行深入研究,探讨其工作原理和应用场景。

2. WEB文件共享系统的分析:本研究将分析已有的WEB文件共享系统,以此为基础,实现一个基于P2P的WEB文件共享系统。

并且,将分析该系统的应用场景和其主要的功能模块,以期能够完善这个共享系统。

3. 系统设计与实现:本研究将进行基于P2P的WEB文件共享系统的系统设计,并着重研究该系统中的各个模块的设计。

实现方面,采用Java语言及其相关技术,如Tomcat服务器、SpringMVC框架、Hibernate等。

三、可行性分析1. 技术可行性:P2P技术在实际应用中取得了良好的效果,并且在当前的技术水平下,利用Java语言进行开发的基于P2P的WEB文件共享系统也具有可行性。

2. 系统可行性:选取该项目所采用的技术和系统实现方案,会提高系统的可扩展性、可维护性等方面,降低系统的开发成本,并提高系统的稳定性。

3. 经济可行性:研究成果具有较高的实用性和商业价值,能够满足用户对于可靠的WEB文件共享系统的需求,并且研究成果未来具有较高的经济效益。

四、预期结果基于P2P的WEB文件共享系统能够实现用户间的高效文件共享,具有以下优点:1.数据存储更加安全:利用P2P技术,文件的每个用户都可以成为其它用户的备份,数据的安全性更强。

P2P多点共享传输软件的设计与实现

P2P多点共享传输软件的设计与实现

软件开发与设计SOFTWARE DEVELOPMENT AND DESIGNP2P多点共享传输软件的设计与实现赵专政(湖南城市学院数学与计算科学系,益阳413000)摘要:采用P2P(Peer-to-Peer)技术多点共享式文件传输,任何一个进行下载的客户,在下载的同时,也能够作为服务器把它已接收到的数据提供给另外一个客户进行下载。

这种方式可以有效地均衡上下行线路的数据量,同时每个客户端又可以部分作为服务器端,减轻了服务器的带宽压力。

本系统用Microsoft Visual C++6.0编写,实现了在局域网中若干台机器互为客户端和服务端,共同完成一个下载任务的功能。

关键词:P2P;文件共享;多点共享1功能分析随着计算机网络的普及,对文件的共享需求也越来越大,提供共享文件的下载服务也成为网络的一个主要应用之一,传统的方式是将文件放在服务器上,通过FTP方式进行下载,这种方式的主要缺点有两个:一是下载人数过多时,会导致服务器的带宽紧张,下载速度变慢;二是下载时数据是单向的,下行数据量大,上行数据量少,造成网络带宽的使用不均衡。

因为以上问题,现在提出了一种基于P2P方式的多点共享式文件传输(BT下载),任何一个进行下载的客户,在下载的同时,也可以把它已接收到的数据作为服务端,提供给另外一个客户进行下载。

这种方式可以有效地均衡上下行线路的数据量,同时每个客户端又可以部分作为服务器端,减轻了服务器的带宽压力,做到“下载的人越多,下载速度越快”。

本软件是基于P2P的多点共享式文件传输软件,它完成了寻找伙伴、上传、下载等基本功能。

可以做到若干台机器互为客户端和服务端,共同完成一个下载任务。

1.1P2P服务器端功能服务器端主要完成文件共享和资源上传的功能,详细功能需求如下:(1)提供文件共享。

(2)监听客户端的连接请求。

(3)能够根据客户端的请求发送共享文件列表或文件块。

1.2P2P客户端功能客户端主要完成搜索共享资源和多点下载功能,详细功能需求如下:(1)搜索局域网内共享资源。

基于P2P技术局域网文件共享系统

基于P2P技术局域网文件共享系统

三、技术路线
系 统 运 行 架 构 图
三、技术路线
(1)在初始化阶段调用 )在初始化阶段调用WSAStartup() () 此函数在应用程序中初始化Windows Sockets DLL , 只有此函数调用成功后,应用程序才可以再调用其他 Windows Sockets DLL中的API函数。在程序中调用该函 数的形式如下:
WSAStartup((WORD)((1<<8|1),(LPWSADATA) &WSAData),其中(1<<8|1)表示我们用的是WinSocket1.1版本, WSAData用来存储系统传回的关于WinSocket的资料。
三、技术路线
(2)建立 )建立Socket 初始化WinSock的动态连接库后,需要在该用户端建 立一个监听的Socket,为此可以调用Socket()函数来建 立这个监听的Socket,并定义此Socket所使用的通信协议。 此函数调用成功返回Socket对象。失败则返回 INVALID_SOCKET(调用WSAGetLastError()可得知 原因,所有WinSocket 的函数都可以使用这个函数来获取 失败的原因)。
基于局域网的文件共享传输系统的开发与设计选用VC++ 基于局域网的文件共享传输系统的开发与设计选用 6.0为开发工具,通过在各用户端建立 为开发工具, 为开发工具 通过在各用户端建立Socket连接后实现 连接后实现 局域网快速、准确、安全的大容量文件共享传输功能。 局域网快速、准确、安全的大容量文件共享传输功能。本 系统能够促进局域网内用户之间的文件资源共享, 系统能够促进局域网内用户之间的文件资源共享,满足主 机之间信息交流,确保文件及文件夹传输的速度和安全性, 机之间信息交流,确保文件及文件夹传输的速度和安全性, 有效地提高工作效率。 有效地提高工作效率。

一种文件共享系统的P2P网络架构设计

一种文件共享系统的P2P网络架构设计

2020年软 件2020, V ol. 41, No. 4基金项目: 云南省教育厅科学研究基金项目(批准号:2010C011)作者简介: 郑晓健(1963–),男,副教授,主要研究方向:对等网络技术;郑子维(1994–),男,工程师,主要研究方向:办公自动化。

一种文件共享系统的P2P 网络架构设计郑晓健1,郑子维2(1. 昆明理工大学津桥学院 电气与信息工程学院,云南 昆明 650106;2. 云南云投股权投资基金管理有限公司,云南 昆明 650100)摘 要: 本文介绍的P2P 网络文件共享系统为两层式多系统服务节点结构。

系统实现了P2P 架构下的各系统服务节点间文件协同检索、节点状态检测、各节点间的实时通信等技术问题,使文件共享系统发挥了P2P 网络结构的技术优势。

通过系统的开发实践,验证了P2P 网络结构下的文件资源共享系统具有扩展方便、负载变化对系统影响较小等特点。

关键词: P2P 网络;文件共享;系统服务节点协同;分布式应用中图分类号: TP393.02 文献标识码: A DOI :10.3969/j.issn.1003-6970.2020.04.015本文著录格式:郑晓健,郑子维. 一种文件共享系统的P2P 网络架构设计[J]. 软件,2020,41(04):63 66A P2P Network Architecture Design of File Sharing SystemZHENG Xiao-jian 1, ZHENG Zi-wei 2(1. School of electrical and Information Engineering, Oxbridge College ,Kunming University of Science and Technology,Kunming 650106, China ; 2. Yunnan Yig Investment Fund Management Co., Ltd, Kunming 650100, China )【Abstract 】: The P2P network file sharing system introduced in this paper is a two-layer multi system service node structure. The system realizes the technical problems such as file collaborative retrieval, node state detection and real-time communication among the service nodes of each system under P2P architecture, which makes the file sharing system play the technical advantages of P2P network architecture. Through the development practice of the system, it is verified that the file resource sharing system based on P2P network structure has the characteristics of convenient expansion and less impact of load change on the system.【Key words 】: P2P network; File sharing; System service node collaboration; Distributed application0 引言P2P 结构[1]与传统网络结构的差别在于让共享资源和网络服务分布到各P2P 节点中,并以点对点的通信方式,实现P2P 节点间的相互访问,从而协同完成节点资源共享并提供各种服务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 绪论1.1 论文课题概述1.1.1 课题背景可以说文件交换的需求直接引发了P2P技术热潮。

在传统的WEB方式中,要实现文件交换需要服务器的大力参与,通过将文件上传到某个特定的网站,用户再到某个网站搜索需要的文件,然后下载,这种方式的不便之处不言而喻。

电子邮件是方便了个人间文件传递问题,却没法解决大范围的交换。

这也是WEB的重要缺陷,P2P就是在情况下横空出世。

P2P很好的解决了传统的C/S模式下瓶颈问题,让资源共享变的更方便,快捷。

用户直接和用户之间进行数据交换,改变了传统的模式。

1.1.2 课题目的和意义本课题最终成果是完成一个基于P2P的文件共享系统。

该系统可以发现网络上的共享资源,并根据自己的需求下载自己需要的资源。

在传输过程中还要保证数据传输的完整和安全。

本课题的基础是文件共享和P2P理论,涉及到知识管理、计算机网络、分布式存储和心理学等领域相关理论。

针对不同的应用需求,人们提出了许多共享方式,以不同的方式来共享不同的内容以满足人们的需求。

但是这些方法都不够全面,没有提出很好的文件共享模式,更加没有很好的解决文件共享的需求。

特别是在信息飞速增长的年代,人们对于信息的筛选即真正知识的共享的需求越来越强烈,而人类社会发展至今,亦未能找到很好的文件共享的模式和手段。

在理论上,本课题探寻文件共享的基础理论——知识管理理论、计算机网络、分布式存储和心理学——中相关研究成果的新结合点,研究在现有理论基础上如何更好的满足人们文件共享的需求,采用分布式、高效的基于P2P技术构建的文件共享网络这种文件共享模式,并明确提出了P2P文件共享网络的整个架构,同时,提出了一个P2P环境下维护数据一致性和可用性的算法;在实践上,课题要实现了一个简单的P2P知识共享网络的框架,给出了原型实现,经过小范围的实验和部署,能够证明P2P文件共享网络能够提供很高的可用性,并且文件共享的效果也应该很好。

此外,通过编写此系统,我又进一步熟悉了网络体系结构,TCP/IP协议的知识,熟练掌握了Socket编程,MFC编程,多线程编程,掌握了利用VC++进行网络开发的过程和步骤,为今后从事软件行业奠定了基础。

1.2 论文内容概述论文主要论述P2P文件共享的相关的理论知识,工作原理,编程思路,以及具体实现细节。

当实现同一种功能有多种方法时,对这些方法进行了比较,并说明选用该方法的理由。

论文分以下几个部分:第一部分是简要介绍所选课题;第二部分是系统可行性研究;第三部分是论文所用到的一些理论知识概述;第四部分是系统概要设计;第五部分是系统详细设计;第六部分是系统测试和实现。

最后对系统的设计进行了总结。

英文翻译、参考文献和致谢词是整个论文的结束。

2 系统可行性研究2.1 系统可行性分析可行性分析[1]包括两个部分:分析建立新系统的必要性和可能性。

分析建立系统的必要性时要注意用户提出的理由是否充分和合理。

分析建立系统的可能性主要包括经济可行性、技术可行性和运营可行性等。

2.1.1 系统设计的必要性现代社会网络已经成为我们生活中的一部分,针对不同的应用需求,人们提出了许多共享方式,以不同的方式来共享不同的内容以满足人们的需求。

但是这些方法都不够全面,没有提出很好的文件共享模式,更加没有很好的解决文件共享的需求。

特别是在信息飞速增长的年代,人们对于信息的筛选即真正知识的共享的需求越来越强烈,而人类社会发展至今,亦未能找到很好的文件共享的模式和手段。

本论文结合P2P文件共享的原理,利用VC++工具编写一个P2P系统,不仅实现了文件共享的目的,而且锻炼了自己的编程能力和动手能力,更重要的是有自己学习的满足感,及由此而带来的成就感。

此外,毕业设计也是大学生在校的一个必修环节,所以无论从主观上还是客观上,设计此系统都是必要的。

2.1.2 设计系统的可行性分析建立系统的可行性包括经济可行性、技术可行性和运营可行性,法律可行性。

经济可行性:与请求别人帮助设计相比,省去一笔费用和沟通时间。

技术可行性:使用Visual C++作为开发工具,利用MFC进行编程,便于高效开发GUI应用程序,ClassWizard使得消息映射简便易行,文档/视结构轻松处理和更新数据。

在此集成开发环境下,开发Windows应用程序是一件比较容易的事情。

运营可行性:此扫描系统软件可以用于商业销售,为作者赢取部分收入。

法律可行性:此系统是应毕业设计的要求而开发的,以后也只是用于个人或正当的商业活动,不会触犯法律。

经分析,本系统是可以进行开发和研究的。

3 相关理论和技术3.1 网络协议3.1.1 TCP协议TCP[2]协议(Transfer Control Protocol)即传输控制协议,它为网络应用程序提供面向连接的可靠的传输服务,工作在网络体系结构中的传输层。

TCP在数据传输之前首先要利用三步握手协议建立连接,并且提供了分组编号,数据校验和重传机制,确保数据传输的正确无误。

3.1.2 UDP协议UDP[2]协议(User Datagram Protocol)即用户数据报协议,它为网络应用程序提供无连接的数据传输服务,和TCP协议一样,也工作在网络体系结构的传输层。

UDP在数据传输之前不需要建立连接,数据准备好就直接发送出去,不能保证分组准确到达目的地。

然而由于没有三步握手和数据重传操作,传输比较方便。

3.1.3 IP协议IP协议(Internet Protocol)即互联网协议,它被用于异构网络的互联,是各种各样种类繁多的网络的粘合剂,工作在网络体系结构的网络层,为传输层提供独立于网路的分组路由服务。

每一台连在网络上的主机都会分配到一个IP地址,用以在网络上标识这台主机。

3.1.4 ICMP协议ICMP[2]协议(Internet Control Management Protocol)即互联网控制报文协议。

是IP协议的附属协议,主要负责在主机之间,主机与路由器之间传递差错信息或者其它需要需要注意的信息。

3.1.5 说明对于从源主机将数据传输到目的主机来说,IP地址和物理地址是必需的。

但是数据到达目的主机并不是在互联网上通信的目的。

互联网上数据通信的最终目的是提供端到端的数据传输,即使一台主机上的某个进程能够和另一台主机上的某个进程进行通信。

然而主机上通常有很多网络应用进程,怎样去区别呢?传输层提供了一种方法:凡是利用传输层进行通信的进程都被唯一地分配了一个16位的标识,称为端口号(Port)。

这样,借助于IP地址和端口号,就可以在网络上唯一地表示一个进程了,进而完成进程之间的通信。

所以,一个端口就是一个潜在的通信通道,也是一个潜在的入侵通道,对目标计算机进行端口扫描可以得到许多有用的信息。

3.2 Socket套接字3.2.1 套接字概述网络层为我们提供分组路由服务,传输层为我们提供数据传输服务,那么我们怎样在应用程序中利用这些服务呢?答案是使用套接字[4]。

套接字是一种网络编程界面,它方便了我们使用网络传输服务,为我们进行基于网络的应用开发提供了一整套编程接口。

套接字是网络的基本构件,是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连的监听进程。

套接字存在于通信区域(通信区域又称地址簇)中。

套接字只与同一区域中的套接字交换数据(跨区域时,需要执行某和转换进程才能实现)。

Socket包含两个方面的含义:其一它是由操作系统或外部过程提供的一组网络编程接口函数,是被广泛接受的网络编程方法;其二它表示一种网络参数,通常将IP地址和网络应用端口的结合称作Socket(插口)。

3.2.2 Windows Sockets基础Windows Sockets(套接字)是在Windows下的一套开放的、支持多种网络协议的、二进制兼容的网络编程接口规范。

WinSock(Windows Sockets简写为WinSock。

)的目的是抽象隐藏网络底层细节,它独立于底层的协议,编程人员无需精通网络和协议的细节,即可实现网络编程。

使用WinSock的应用程序可以在遵从Windows Sockets API的任何网络上进行通信。

每个 socket 都有一个类型,它是根据用户可见的通信特征进行描述的。

一般应用程序只在同一类套接字间通信。

不过只要它依据的协议支持,也完全可以在不同类型的套接字间通信。

在 WinSock 1.1 只支持两种 socket 类型:#define SOCK_STREAM 1 /* stream socket */#define SOCK_DGRAM 2 /* datagram socket */使用最多的是 SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。

(1) 流式套接字(Stream sockets)它适用于没有记录边界的字节数据流,保证分组投递(delivered)、顺序正确并且没有重复分组。

一般用于TCP协议。

(2) 数据报套接字(Datagram sockets)它支持面向记录的数据流,但不保证分组投递、不保证顺序、可能有重复分组。

一般用于UDP传输协议中。

在Winsock 2.1以后添加了对原始套接字的支持:#define SOCK_RAW 3 /* raw-protocol interface */通过使用原始套接字我们可以从网络接口捕获到原始的数据包,从而可以对感兴趣的数据做出自己的处理,或者自己构造原始数据包发送到网络上。

在本系统程序中就利用WinSock库创建原始套接字,以实现对局域网的监听。

关于进程是如何利用套接字进行通信的,见图3.1。

图3.1 套接字的使用3.3 数据库编程常见的DBMS(数据库管理系统)有SQL2000,Oracle,Sybase,Access等。

其中的前三个都是属于大型数据库管理系统,用于大量数据的管理,Access数据库比较适用于小型数据的管理。

所以在本扫描系统的实现中选用了与Access 数据库建立连接。

然而,要是应用程序中直接与DBMS打交道,将会面临数据库类型的多样性所导致的编程的繁琐。

面对不同类型的数据库,微软提供了ODBC数据库接口,用来以一种统一的方式处理与所有的数据库的连接。

这里我们就要用ODBC与Access数据库建立连接使用ODBC连接数据库如图3.2所示:图3.2 ODBC访问数据库应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。

这样,只要应用程序将数据源名提供给ODBC,ODBC 就能建立起与相应数据库的连接。

在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。

相关文档
最新文档