工程技术学院毕业设计(论文)专用纸
在其他对等机接收到该查询描述符后,检查本地是否有符合查询请求的文件内容,如果有,则按查询描述符的发送路径返回一个查询响应描述符QueryHit,无论本地是否存在符合查询请求的文件内容,其他对等机都会将该查询包通过扩散方式继续在网络中传递,直至查询包中TTL属性值递减为0时才停止继续转发;一旦定位了响应查询文件的对等机之后,就与响应对等机建立TCP连接,通过HTTP协议从响应对等机中下载自己查询的文件。文件的传输不再经过Gnutella网络进行。
分布式对等网络模型也存在很多弊端,主要表现在以下方面:
? 搜索请求要经过整个网络或者至少是一个很大的范围才能得到结果,因此,这种模
式占用很多带宽,而且需要花费很长时间才能有返回结果。
? 随着网络规模的扩大,通过扩散方式定位对等点及查询信息的方法将会造成网络流
量增加,导致网络拥塞,最终使Gnutella网络被分片,因此,网络的可扩展性不好,不适合大型网络。
? 纯分布式的P2P模式很难被企业所利用,因为它缺少对网络上的用户节点数以及对
他们提供的资源的一个总体把握。 ? 安全性不高,易遭受恶意攻击。
这种无中心、纯分布式系统的特点是:它不再是简单的点到点通信,而是更高效、更复杂的网络通信。 (3)混合P2P网络
集中式P2P有利于网络资源的快速检索,并且只要服务器能力足够强大就可以无限扩展,但是其中心化的模式容易遭到直接的攻击:分布式P2P解决了抗攻击问题,但是又缺乏快速搜索和可扩展性。混合式P2P结合了集中式和分布式P2P的优点,在设计思想和处理能力上都得到了进一步的优化。它在分布式模式的基础上,将用户节点按能力
11 第 页
工程技术学院毕业设计(论文)专用纸
进行分类,使某些节点担任特殊的任务。
这些节点共分为3种:
? 用户节点:普通节点,它不具有任何特殊的功能。
? 搜索节点:处理搜索请求,从它们的孩子节点中搜索文件列表,这些节点必须有128
kbit/s RAM的网络连接速度,建议使用高性能的处理器。
? 索引节点:连接速度快、内存充足的节点可以作为索引节点。索引节点用于保存可以
利用的搜索节点信息,并搜集状态信息,维护网络结构信息。
在第三代P2P的软件体系结构中,采用了混合式P2P。这种模式的关键之一是引入了索引节点,索引节点不会直接连接到有版权的资料上,它就像搜索引擎一样,只是搜索和所需资料相关的地址,至于用户到底连接下载了什么内容则和它无关。这种模式的关键之二是引入搜索节点,搜索节点管理着所属用户的文件列表。用户节点通过索引节点获得搜索节点信息,之后用户节点就与获得的搜索节点相连,每一次查询都通过该搜索节点进行。当用户发出搜索请求后,如果和用户节点直接相连的搜索节点查询结果达到100个就停止;如果不足100个,就向相邻的搜索节点发出请求,如果查询结果还不够,就继续向外快速发散,直到所有的搜索节点都被搜索到为止。若所有的搜索节点都被访问过,就意味着整个网络上的节点都被搜索到了,其速度要比纯P2P模式快得多。
12 第 页
工程技术学院毕业设计(论文)专用纸
2 JAVAqq局域网聊天程序的需求分析
2.1 课题来源
根据当前网络的需求,网络聊天越来越受各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。现在Intranet网络在企业中越来越流行,不需要连入广域网就实现实时消息传递的系统由于其优越的性能受到企业的青睐。本人原来学习过JAVA语言,对P2P技术以及网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,以及能更深入的理解P2P技术的内涵,本人就决定以《基于JAVA局域网聊天程序设计与实现》为毕业设计,希望通过这一次的能进一步提高本人的网络编程的能力。
2.2 需求分析
基于P2P的聊天系统,用户既是服务器端也是客户端。这并不同于传统的一服务器多客户端的网络结构,而是多服务器多客户端的网络结构,服务器与客户端一一绑定,数量相等。不过,从原理上看,这还是C/S模式。所以,我的程序大致可分为服务器模块和客户端模块来进行分析。
首先介绍一下服务器模块的任务:
1.服务器模块应当建立一个ServerSocket,并且不断进行侦听是否有客户端模块连接或者断开连接。
2.服务器模块监听网络上的客户端模块是否有与本机进行通信的需求。若有需求,就建立连接,接收消息,通过ActionListener接口进行侦听,当用户点击按钮后,启动一个聊天界面,将消息通过客户端模块显示出来。
13 第 页
工程技术学院毕业设计(论文)专用纸
以上就是服务器模块最主要的两个任务。 客户端应该完成的工作包括:
1.向需要通信的主机发送连接请求,若成功,通过ServerSocket进行连接,端口默认为5001。
2.向已建立连接的主机发送消息。 3.显示本机服务器接收的信息。
除此之外,本系统还讲实现群聊功能:默认239.0.0.0为广播地址,用UDP技术通过广播的方式把消息传递给局域网内每个用户的手中。从原理上讲,跟实现客户端的原理差不多,只不过这里不是点对点两人通信。
14 第 页
工程技术学院毕业设计(论文)专用纸
3 JAVAqq局域网聊天程序的系统分析与设计
3.1 JAVAqq局域网聊天程序的总体设计要点
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,
例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
1、实现思想
局域网基于P2P上的聊天程序一般都是以服务器模块提供连接响应,使用者通过客户端模块连接,与用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器和客户端两个模块的程序。
2、服务器模块工作流程
服务器模块通过socket()系统调用创建一个Socket数组后,与指定的本地端口绑定,就可以在端口进行侦听listen()。如果有用户连接请求,则建立一个Socket,将客户端地址赋给这个Socket。然后就可以相互传递信息了。
3、客户端模块工作流程
客户端程序相对简单,只需要建立一个Socket与服务器模块连接,成功后通过这个Socket来发送和接收数据就可以了。
系统通过ActionListener接口来监听用户的对按钮的点击,来启动各聊天窗口进行相关工作,如私聊,群聊等。
3.2 JAVAqq局域网聊天程序的设计步骤及功能模块划分
15 第 页