基于P2P的文件共享系统的设计与实现
第
2
2
0
0
1 0 霸期 年3月 计算机技术与发展 O0MP1厂rER TECHN0I AND DEvELoP] NT V01.20 No.3 Mar. 2010
基于 P2P的文件共享系统的设计与实现
范会波,张新有
(西南交通大学信息科学与技术学院,四川 成都 610031)
摘 要:随着网络技术的发展,人们可以从网络中获取越来越多的资源。特别是多媒体技术的发展更是推动了人们对信
息共享的需求。对于企业内部来说,用户之间资源共享是必不可少的,而企业员工的计算机存储设备利用率普遍不高,存
在一定程...
第
2
2
0
0
1 0 霸期 年3月 计算机技术与发展 O0MP1厂rER TECHN0I AND DEvELoP] NT V01.20 No.3 Mar. 2010
基于 P2P的文件共享系统的
与实现
范会波,张新有
(西南交通大学信息科学与技术学院,四川 成都 610031)
摘 要:随着网络技术的发展,人们可以从网络中获取越来越多的资源。特别是多媒体技术的发展更是推动了人们对信
息共享的需求。对于企业内部来说,用户之间资源共享是必不可少的,而企业员工的计算机存储设备利用率普遍不高,存
在一定程度的浪费。文中将P2P技术与网络应用中的文件共享相结合,整合空闲的存储资源,实现一个基于P2P的文件
共享系统。提高了企业用户之间资源共享效率,降低企业的存储成本。目前,P2P技术越来越成为当前技术的热点,解决
了许多传统网络应用中的难题。
关键词:P2P;文件共享;套接字
中图分类号:TP393 文献标识码:A 文章编号:1673—629X(2010)03—0048一O4
Design and Implementation of File’。Sharing System
Based on P2P
FAN Hui-bo,ZHANG Xin-you
(School of Information Science and Technology,Southwest Jiaotong University,Chengdu 610031,China)
Abstract:Withthe rapid developmentof computertechnology,people can acquiremore andmore l"esoLu-o~from the network.Now。the
development ofmultimediatechnologywhichmakesthe behavior of sharinghe devdopedtOahigherleve1.Forthe enterprise,employees
shale re∞urces is essentia1.the equipments of storage in computer don’t be utilized enough.TKs paper combines the P2P teehnoes and
file—sharing of network application,unite the idle s~rage re~)1.1l"CeS,implem ents a file sharing s~tem based on P2P,reduces storage
COSTS,making file sharing easily.At present,P2Pbecome atechnicalhotspotinthe worldwhich resDlvedmanyofproblemsofthetradi.
tional web application.
Key w0rds:peer—to—peer;file sharing;socket
O 引 言
进入网络时代后,网络规模逐渐增大。网络用户
可以方便地获得丰富的信息,用户之间共享资源、互相
交流也变得越来越普遍。在这种局势下,文件共享就
成为人们获取大量资源的一种有效途径,也是早期
P2P(Peer—to—Peer Network,对等网络)研究和应用
的一个主要方向。可以说,正是文件共享的需求激发
了P2P研究的热潮。在传统的C/S结构中实现文件
共享需要服务器的参与,客户端将所要共享的文件内
容上传到某个特定的服务器,用户就可以到这个服务
器上查找、下载自己所需要的文件。所有的资源都存
储在服务器上,客户端必须通过服务器连接下载,这就
对服务器的性能提出了很高的要求,使服务器成为整
个系统的瓶颈,严重影响了共享资源的用户数目以及
下载资源的速度。而 P2P则改变了C/S的网络体系
结构,将“中心”的服务器移到了“边缘”的客户机上⋯1。
系统中的每一个节点的地位都是平等的,通过节点之
间的相互操作,就可以完成文件的共享等相关工作。
该论文就实现了一个企业内部基于P2P的文件
共享系统,该系统提高了文件检索和共享的效率,同时
解决了服务器瓶颈的问题。由于Java语言对网络编
程的很好支持及其特有的跨平台性,本系统采用了Ja.
va作为开发语言,采用Eclipse作为开发平台。Eclipse
是一个高效的、开源的Java开发平台,它的安装包集
成了Java开发环境的插件JDTE 。
收稿日期:2009—07—02;修回日期:2009—10—21
吴:要妻 竺科学 0 77 31 02 ) 一 + 1典型的P2P系统 作者简介:范会波(1985
一 ),男,山东烟台人,硕士研究生,研究方向 ~ ⋯ 。
为P2P网络、P2P缓存协作;张新有,副教授,研究方向为P2P技术、 从 1999年至今,P2P系统正逐渐成为研究和应用
新型网络体系结构、网络管理。 的热点。P2P共享系统就是通过网络将端用户设备共
第3期 范会波等:基于P2P的文件共享系统的设计与实现 ·49·
享的资源整合起来,实现大规模的文件共享和存储_3 J。
现在已有一些比较著名的系统如:Napster,Gnutella,
Kazaa,Morpheus,Chord,BitTorrent等。以下是两种典
型的P2P系统:
(1)Napster。
Napster采用的是部分集中式的节点组织结构。
并没有完全取消服务器 ,只是弱化T]]l/务器的功能[引。
在Napster中,节点在加入系统时将告诉服务器自己机
器上所共享的文件,服务器并不存储这些文件的具体
内容,而只是保存这些文件的元数据。当一个客户机
查找某个文件时,先向服务器提出请求,服务器根据自
己保存的元数据查找到文件所在的节点,将该节点的
相关信息返回给客户机L4 J。客户机然后直接与文件所
在的节点建立连接,下载文件。采用Napster除了可以
快速定位文件之外,还可以方便地实现服务的商业化。
图 1
示了 Napster系统结构图。Clientl先向
Server发送询问(I~ery),Server查询用户请求的资源,
将结果(共享文件地址,如 Client2)通过 Reply返回
Clientl,之后 Clientl直接从 Client2获取所需要的文
件。
图 1 Napster系统结构 图
(2)GnuteUa。
与Napster不同,Gnutella取消了以服务器为核心
的目录式结构,而是采用了泛洪算法(Flooding),按宽
度优先原则搜索资源的位置 J。要查找某个文件,节
点首先向自己相邻的活动节点以广播方式发送查询请
求包。其他节点在接到包后检查本地是否有符合条件
的文件,如果有,则按查询请求包的路径返回一个响应
包,该响应包中包括节点的 IP地址、服务端口号等信
息;如果没有,则节点将该查询包发送给它的邻节点,
直到查询包的 1vrL(Time To Live)计数器减为 0为
止,该计数器中数值是由查询包所发起的节点设置的,
以防止该查询无限制地转发下去【6J。
发起查询的节点收到查询响应包后,则根据包中
的信息直接与目标节点建立连接,下载文件。图2表
示了Gnutella查询过程。
(a)A点发出查询请求 (b)经中间节点转发
(c)B点响应查询请求 (d)A和B数据传输
图2 Gnutella查询过程
2 系统总体结构及实现流程
2.1 总体结构
本系统主要用于企业网络或园区网内部用户共享
资源。采用 P2P技术保证用户的随时接入、离开不会
影响到系统的总体结构。为避免企业的财务、人事等
重要文件被不相关人员获知,系统引人了权限管理。
用户注册时用户名的开头应为部门的首字母(如研发
部为YF),服务器根据用户的职务和部门赋予用户不
同等级的权限,用户在上传文件时必须对文件设置权
限并经服务器核实(文件的权限不高于上传文件用户
自身的权限),这样保证了只有自身权限大于文件权限
的用户方可下载文件。
另外,如果用户上传的文件只能本部门或指定部
门人员下载。用户可在上传界面选择指定的部门,客
户端会在上传消息的头部加注指定部门的代号。如选
择研发部,上传消息头部后会加注“YF”,服务器会限
定只有研发部的人员能下载该文件。
为了提高信息的检索效率,系统采用了一个弱化
功能的服务器。服务器仅保存当前在线客户端所共享
文件的相关属性(如文件名及权限、类型、大小、文件所
在的客户端)而不保存文件的具体内容【7J。同时,服务
器可接受客户端发来的反馈信息,对共享文件进行更
· 5O· 计算机技术与发展 第2O卷
新,最大程度保证共享的文件内容是正确的。总体结
构如图3所示。
图3 P2P文件共享系统结构
由于本系统针对企业内部用户,因此用户注册采
用实名制。用户共享的文件经服务器端权限检查通过
后,直接显示在服务器的文件列表里,其他满足用户的
权限即可通过 P2P下载。
2.2 系统工作流程
打开系统的客户端软件,登陆服务器便可获得服
务器返回的最新共享信息。节点向服务器发出搜索文
件请求,服务器将符合该请求的所有节点的 IP,端口
号等信息发给该节点。然后节点 Ping每一个 IP地
址,根据返回时间与最近的节点建立连接,下载文件。
图4显示了客户端A共享文件,客户端B搜索、下载
文件的工作流程。
3 关键模块的设计与实现
为了方便用户使用软件,本系统采用了可视化的
界面设计,用户可以在客户端界面上控制本地文件的
共享,分类查看所有的共享文件,了解当前最多、最新
的下载文件,搜索下载本身所需要的资源。并可向服
务器反馈信息,方便共享文件的更新。其中文件上传、
搜索、下载是本系统的核心模块,其功能的实现主要基
于socket机制。
3.1 文件分块及上传
在本系统中将每一个要共享上传的文件分成大小
为1001d3(除最后一块)的文件块,并对每一个文件块
按顺序编号 .文件块的名称为:原文件名 +.part+编
号。分好的文件块放在和源文件同一目录下。将文件
分块是为了在网络传输中更好地利用带宽,提高文件
传输的效率Is J。
关键代码如下:
客户端A 服务器 客户端B
①连接服务器
②上传共享信息
①
一
④搜索共享文件
⑤返回搜索结果
一
⑥同客户端A 接并请求下载
⑦ 魏 居传输
⑧下i l芄完成
图4 客户端搜索、下载文件的工作流程
Private separatorFile(String source.File,long bloekSize)
//根据原文件和文件块大小对文件拆分
{
getFileAttribute(sour~File);//取出原文件的名称及大小
BlockNumber=getBlockNumber(blockSize);//得到文件块的
总数
if(BlockNuml:~_r==1)//如果文件不足lOOkB,就一次性写入
long writeSize=O;//每次写入的字节
long writtedSi~=0;//已经写入的字节
for(int i=1:i<=No&Number;i++)
t
if(i
0)
}
raf.write(1ot,0,len);
}
fis.close();
writtedFile= writtedFile+ Long.parseLong f separatedFile-
sAndSize[i][1]);
}
}
3.4 系统运行
使用该系统可以方便企业内部用户交流技术,共
享本地计算机的资源。用户不必将企业的数据资源全
部保存到本地,通过本系统可实现对数据的“所得即所
需”。并且在企业内部使用时可以达到很高的下载速
度,大大节省了用户的时问。
图5为软件的下载界面。
图5 P2P文件共享系统下栽界面
4 结束语
现代的计算机技术日新月异,企事业内部的计算
机性能有了很大的提高,很多计算机闲置了大量的资
源。经实际应用证明该系统很好地整合了这些闲置的
资源,提高资源的利用率,节省了企业用于数据存储方
面的开销。
系统的服务器采用多线程实现,理论上可以无限
制地接入客户端。并且文件的下传、下载都是在客户
端之间进行,有效解决了服务器的瓶颈问题 ,不会造成
网络拥塞。当然该系统对于文件安全还应该有更深入
的研究。
参考文献:
[1] 贾杏丹.P2P网络搜索技术研究[J].计算机应用研究,2006
(3):31—34.
[2] Sun Yah,Tang Di.An Algorithm for CB_rve Clipping Against
the Rectangular Window[J].Computer Applications and Soft—
ware,2003,20(5):35—36.
[3] 陈 姝,方滨兴,周勇林.P2P技术的研究与应用[J].计算
机工程与应用,2002(13):25—26.
[4] 苗 坤,张 毅,左 娟.基于Jx]1A的 P2P文件共享系统
[J].计算机系统应用,2009(2):37—39.
(下转第 55页)
第 3期 周爱武等:Hopfield在计算机编程中的应用与研究 ·55·
field神经网络就会找到google,也就是说 Hopfield神经
网络有很强的纠错能力。它会找到和输入单词最接近
的记忆【 。 ‘
再举一个简单的例子并说明后台运行原理:
首先让Hopfield神经网络记忆如下单词:CCC、bbc、
bba,如果输入的是 abc,那么通过肉眼比较可以看出
bbc和输入的abc最相似,其次相似的是bba和CCC。通
过Hopfield神经网络的联想记忆也可以得到相同结
论,如图 5所示。
插件机制来搭建嵌入在eclipse开发工具中一个知识可
拓展的动态帮助插件,实现根据残缺不全的java代码
联想到完整的iava代码的功能,能够给程序员编程带
来极大的方便,其在计算机代码编程中有着良好的应
用前景和发展方向。
下步笔者会努力做进一步的探索和实践。
4 结束语
文中介绍了用Hopfield联想存储器知识和eclipse
参考文献:
[1] 高行山,叶天麒.CPN神经网络在结构识
别中的应用[J].微机发展(现更名:计算机
技术与发展),1999,9(2):28—29.
[2] 徐耀群,包 丹,甲继承.一种联想记忆网
络研究[J].哈尔滨商业大学学报:自然科
学版,2008,24(1):77—80.
[3] 姜国均.Hopfield网络解 TSP的改进算法
[J].浙江大学学报:理学版,200l,28(2):
160—163.
[4] Cao Jinde.Global exponential stability of
Hopfieldneural networks[J].Intemat J Sys—
tems Sci,2001,32:233—236.
[5] TalavanPM,Javier.Parameter settingofthe
Hopfield network applied to TSP【J].Neural
Networks ,2002,15:363—373.
[6] Hopfield J J.Neural networks and physical
systemswith emer-gent collectcomputafional abilitics[J].Proc
Nail Acad Sci。1982,79(8):2554—2558.
[7] RehnM,SommerFT.Storingand restoring visualinput、vim
collaborative rank coding and associative memory[J].Neuro·
computing,2006,69:1219—1223.
[8] 荣秋生,潘梅森,颜君彪.基于Hopfield神经网络的图象矢
量量化[J].微计算机信息,2007(2—3):301—302.
[9] 钟守铭,杨 烨.Hopfidd型神经网络 k一全局稳定性[J].
电子科技大学学报,1995,24(6):647—651.
(上接第 5l页)
[5] 贾 磊,张新有,李 娜.基于JXTA模块的P2P应用研究
[J].计算机技术与发展,2009,19(5):238—241.
[6] Liang Y D,Brasky B A.A New Concept and Method for
LineClipping[J].ACMTransactionsonGraphics,1984,3(1):
21—22.
[7] 罗 熹.P2P技术的应用与安全[J].中国科技信息,2008,
17(6):6—8.
[8] DruschelP,RowstronA. :Alarge—scale,persistent peer
— tO—peer storage utility[C]//l-lotOS VI,Schcss Elmau,
Germany:[s.n.],2001:23—24.
本文档为【基于P2P的文件共享系统的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。