logo资料库

基于P2P的文件共享系统的设计与实现.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
第 1 0 霸期 年3月 2 0 0 2 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 Im plem entation 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:W iththe rapid developmentof computertechnology,people can acquiremore andmore l"esoLu-o~ from the network.Now 。the development ofmultimediatechnologywhichmakesthe behavior of sharinghe devdopedtOahigherleve1.Forthe enterprise,em ployees 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,im plem ents a file sharing s~tem based on P2P,reduces storage COSTS,making file sharing easily.At present,P2P becom e atechnicalhotspotinthe worldwhich resDlved manyofproblemsofthetradi. tional web application. Key w0rds:peer—to—peer;file sharing;socket O 引 言 对服务器 的性能提 出了很高的要求 ,使服务器成 为整 进入 网络时代后 ,网络规模 逐渐增 大。网络用 户 个系统 的瓶颈 ,严重影 响了共 享资源 的用户数 目以及 可以方便 地获得丰富的信息 ,用户之间共 享资源 、互相 下载资源 的速度 。而 P2P则改 变 了 C/S的网络体 系 交流也变得越来越普遍 。在这 种局势下 ,文件共享 就 结构 ,将“中心”的服务器移到 了“边缘”的客户机上…1。 成为人 们获 取 大量 资 源 的一种 有 效途 径 ,也是 早期 系统中的每一个节点 的地位 都是平 等的 ,通过节点之 P2P(Peer—to—Peer Network,对 等 网络)研究 和应用 间的相互操作 ,就可以完成文件的共享等相关工作。 的一个主要方 向。可以说 ,正是 文件共 享 的需求激 发 该论 文就实 现 了一个 企业 内部基 于 P2P的文件 了 P2P研究 的热潮 。在传统 的 C/S结 构 中实 现文件 共享系统 ,该 系统提高了文件检索和共享 的效率 ,同时 共享需要 服务器的参与 ,客户端将所要 共享的文件 内 解决 了服务器瓶 颈的 问题 。由于 Java语 言对 网络编 容上传到某个特定的服务器 ,用户就 可以到这个 服务 程的很好支持及其特有的跨平 台性 ,本系统采用 了 Ja. 器上查找 、下载 自己所需要 的文件。所 有的资源都存 va作为开发语 言 ,采用 Eclipse作 为开发平 台。Eclipse 储在服务器上 ,客户端必须通过服务器连接下载 ,这就 是一个高效 的、开源 的 Java开发 平 台,它的安 装包集 成了 Java开发环境的插件 JDTE 。 收稿日期 :2009—07—02;修回日期 :2009—10—21 作者简介:范会波(1985一 ),男 ,山东烟台人 ,硕士研究生 ,研究方 向 吴:要妻 竺科学 0 77 31 02 ) 一 + 1典型的P2P系统 为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。要查找某 个文件 ,节 (a)A点发 出查询请求 (b)经 中间节点转发 (c)B点 响应查询请求 (d)A和 B数 据传输 图 2 Gnutella查询 过 程 2 系统总体结构 及实现流 程 2.1 总体结构 本系统 主要用 于企业 网络或园区网 内部用 户共享 资源。采用 P2P技术 保证用户 的随时接入 、离开不会 影响到系统 的总体 结构 。为 避免企业 的财务 、人事 等 重要文件被不 相关 人员 获 知 ,系统 引人 了权 限管 理。 用户注册时用户名的开头应 为部 门的首字母 (如研 发 部为 YF),服务器根 据用户 的职务和部 门赋予 用户不 同等级的权 限 ,用户 在上传文件 时必须对 文件 设置权 限并经服务器核实 (文件 的权 限不高 于上传 文件用户 自身的权限),这样保证 了只有 自身权 限大于文件权 限 点首先 向 自己相邻 的活动节点 以广播方式发送查询请 的用户方可下载文件 。 求包 。其他节点 在接到包后检查本地是否有符合条 件 的文件 ,如果有 ,则按查询请求包 的路径返 回一个响应 包 ,该响应 包中包 括节点 的 IP地址 、服务端 口号等 信 息 ;如果没有 ,则节点将 该查 询包 发送 给它 的邻节 点 , 另外 ,如果用户上传 的文件 只能本 部 门或指定 部 门人员下载。用户可 在上传 界面选择 指定 的部 门 ,客 户端会在上 传消息 的头部加注指定 部门的代号。如选 择研发部 ,上传 消息头 部后会 加注 “YF”,服务 器会 限 直到查 询包 的 1vrL(Time To Live)计 数 器减 为 0为 定只有研发部 的人员能下载该文件。 止 ,该计数器 中数值是 由查询包所发起的节点设置 的 , 为了提高信息 的检 索效率 ,系统采用 了一 个弱化 以防止该查询无 限制地转发下去 【6J。 功能的服务器 。服务器仅保存 当前在线客户端所共享 发起 查询 的节点 收到查 询响应包 后 ,则根 据包 中 文件的相关属性 (如文件名及权 限 、类型 、大小 、文件所 的信息直接与 目标 节点建 立连接 ,下载 文件。图 2表 在的客户端 )而不保存文件的具 体内容 【7J。同时 ,服务 示 了 Gnutella查询过程 。 器可接受客 户端发来 的反馈信 息 ,对共享 文件 进行更
· 5O · 计算机技术与发展 第 2O卷 新 ,最大程度保证 共享的文件 内容 是正确 的。总体结 关键代码如下 : 构如图 3所示。 客户端A 服务器 客户端B ①连接服务器 ②上传共享信息 ① ④搜索共享文件 一 ⑤返 回搜索结果 一 ⑥同客户端A 接并请求下载 ⑦ 魏 居传输 图 3 P2P文 件 共 享 系统 结构 由于本系统针对 企业 内部用户 ,因此用 户注册采 用实名制 。用 户共享 的文件经服务器端权限检查通过 ⑧ 下i l芄完成 后 ,直接显示在服务器 的文件列表里 ,其他满足用户 的 权限即可通过 P2P下载。 2.2 系统 工 作 流 程 打开系统的客户端 软件 ,登陆服务器便 可获得服 务器返 回的最新共享信息 。节点 向服务 器发 出搜索 文 件请求 ,服务 器将符合 该请求 的所有节 点的 IP,端 口 图 4 客户端搜 索、下载文件的工作流程 Private separatorFile(String source.File,long bloekSize) //根 据原文 件和文 件块大 小对 文件拆 分 { getFileAttribute(sour~File);//取 出原文件 的名称及大 小 BlockNumber=getBlockNumber(blockSize);//得 到 文 件块 的 号等信 息 发给 该节 点。然后 节 点 Ping每一 个 IP地 总数 址 ,根据 返回时间与最近 的节 点建立连接 ,下 载文件。 if(BlockNuml:~_r= =1)//如果 文件不 足 lOOkB,就一次 性写入 图 4显示 了客户端 A共享 文件 ,客 户端 B搜索 、下 载 long writeSize=O;//每次写入 的字节 文件的工作流程 。 3 关键模块的设计 与实现 为了方便用户使用 软件 ,本系统采用 了可视化的 界面设计 ,用户可 以在客户端 界面上控制本地 文件的 共享 ,分类查看所有 的共享 文件 ,了解 当前最 多、最新 的下载文件 ,搜索下 载本身所需要 的资源。并 可 向服 务器反馈信息 ,方便共享文件的更新。其 中文件上传 、 搜索 、下载是本 系统的核心模块 ,其功能 的实现主要基 于 socket机制。 3.1 文件分块及上传 long writtedSi~=0;//已经写入 的字节 for(int i=1:i< =No&Number;i++) t if(i
第 3期 范会波等 :基 于 P2P的文件共享系统 的设计与 实现 ·5l · (sign=“up”)。服务器 收到消息 后从其头 部得到标识 部保存到本地 ,通过本系统可实现对数据的“所得即所 符 ,然后 利用 writeNodeToLink(LinkList,otherMessage) 需”。并且在企业 内部使用 时可 以达 到很高 的下载 速 函数将其 他信息写入 一个链表 中 ,上传 的每个文件 都 度 ,大大节省 了用户的时问。 图 5为软件的下载界 面。 对应着链 表中的一个节点 。 3.2 文件查看及搜索 本系统 中的文 件查 看和 搜索 实现 的原 理是 一样 的。用户 可以在客户端查看网络中所有共享的文件信 息 ,也可查看指定 日期 共享文件 ,或者分类别查看共享 的文档 、软件 、代码、书籍等。客户端发 出查 看信息后 , 服务器根据存储链表中“类 型”关键字查找符合用户要 求的文件 ,并将结果返 回给客户端 。 本系统 的搜索功能是基 于关键 字搜索 ,服务器接 收 到用 户 要搜 索 的文 件 后 ,调 用 searchContent(Lin— kList,filename)函数到链表 中查找 是否有匹配 的文件 , 如果找到 ,则将存储该 文件的计算机 IP、端 口、文件大 小 等信息返 回给客户端 。用户可根据这些信息到相应 的计算机上下载所需文件 。 3.3 文件的下载与整合 用户搜索到 自己所需 的文件后利用服务器返 回的 IP、端 口号 同对应 的客户 端连 接。客户端 启动 Share— File线程输 出文件 内容 。用户则 调用 DownFile类 将拆 分好的文件块下载到本地保 存路径 中 ,同时 ,用户界面 图 5 P2P文件共享 系统下栽界 面 显示下载的进度和速度 。 文件下载完毕后 ,本 地保存 的只是事 先拆分好 的 4 结束 语 文件块 ,需要进一步将 这些文件 块整合成 一个完整 的 现代 的计算机技术 日新月异 ,企 事业 内部 的计 算 文件。 文件整合的关键代码如下 : privateCombineFile() { raf=new RandomA~ ile(soureefile,“rw”); for(int i=O;i0) } raf.write(1ot,0,len); } fis.close(); writtedFile= writtedFile+ Long.parseLong f separatedFile- sAndSize[i][1]); } } 3.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神经 插件机制来搭建嵌入 在 eclipse开发工具 中一个知识可 网络有很强的纠错能力。它会 找到和输入单词最接近 拓展 的动态帮助插件 ,实现 根据 残缺不 全 的 java代码 的记 忆 【 。 ‘ 联想到完整的 iava代码 的功能 ,能够 给程序员 编程带 再举一个简单的例子并说明后台运行原理 : 来极大 的方便 ,其在计算机 代码 编程 中有着 良好 的应 首先让 Hopfield神经 网络记忆如下单词 :CCC、bbc、 用前景和发展方 向。 bba,如果输 入 的是 abc,那么 通过 肉 眼比较 可 以看 出 下步笔者会努力做进一步的探 索和实践。 bbc和输入 的 abc最相似 ,其次相似的是 bba和 CCC。通 过 Hopfield神 经 网络 的联想 记 忆也 可 以得 到 相 同结 参考文献 : 论 ,如图 5所示 。 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 Netw orks ,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 ,Sommer FT.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].ACM TransactionsonGraphics,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.
分享到:
收藏