基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx

上传人:b****3 文档编号:3845886 上传时间:2022-11-25 格式:DOCX 页数:55 大小:150.40KB
下载 相关 举报
基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx_第1页
第1页 / 共55页
基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx_第2页
第2页 / 共55页
基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx_第3页
第3页 / 共55页
基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx_第4页
第4页 / 共55页
基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx

《基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx》由会员分享,可在线阅读,更多相关《基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx(55页珍藏版)》请在冰豆网上搜索。

基于JAVA局域网聊天程序设计与实现附源代码毕业论文.docx

基于JAVA局域网聊天程序设计与实现附源代码毕业论文

 

毕业论文

基于JAVA局域网聊天程序设计与实现(附源代码)

摘要

随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青睐。

目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。

即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。

对等网络(peer-to-peer,简称P2P),应用最初出现时和现在并不相同。

事实上可以认为它是若干不同技术以及流行趋势相结合的产物。

以下是导致P2P技术发展最重要的趋势:

首先,一些新技术与软件工程的结合,形成了一种将工作分散的趋势。

P2P计算正是这种分散工作趋势的结果。

其次,在企业应用集成等因素的驱动下,过去十年渐渐形成从集中的单机系统转向分布式系统。

然而随着互联网的发展,全面的分布式计算也就成为一种迫切需求。

关键词:

局域网聊天P2Pjava

 

Abstract

WiththedevelopmentoftheInternet,thechattoolasacommunicationtool,hasbeenpopularlyacceptedbynetizensofallages.Atpresent,therearemanypowerfulchattools,ofwhichTencentQQ,MSN-Messageraremuchmoreprevalent.

Instantmessagingsoftwareisnecessaryforeveryonewhoconnectstotheinternet,whichcannotonlyprovideyouapromptwaytofindfriendsandpartnersonline,butcanprovideyoutheconvenienceofinternetrelaychatandinformationdelivering.Uptonow,thereareabout300millionpeopleusingreal-timesoftwareallovertheworld.Asmoreandmorecorporationshavefocusedonthismarketwithgrowingpotential,whichhashundredsofmillionsofuses,thecompetitionsamongthesecorporationsareextremelyfierce.

Theinitialapplicationofpeer-to-peernetwork(peer-to-peer,referredtoasP2P)isnotthesameasitisnow.Infact,itcanberegardedasacombinationofdifferenttechnologiesandfashiontrends.BelowarethemostimportanttrendsthathaveledthedevelopmentofP2Ptechnology:

Firstofall,theintegrationofsoftwareengineeringandnewtechnologiesledtoaworkingdispersiontrend.Asaresult,P2Pcomputingwasborn.Then,inthepastdecade,ithasturnedfromasinglecentralizedsystemtodistributedsystemduetothemotivationoffactorssuchasenterpriseapplicationintegration.Atlast,withthedevelopmentoftheInternet,however,acomprehensivedistributedcomputinghasbecomeanurgentneed.

Keywords:

LANchatP2Pjava

 

 

1绪论

随着互联网逐步普及,互联网技术的逐步提高。

人们的工作和生活也越来越离不开网络,而即时聊天是人们最常见、最直接的online交流的方式。

本系统以聊天功能为主,通过网络为用户提供一个人际交流的平台。

本文所介绍的网络聊天系统是基于JAVA编程语言开发设计的,其主要特性是能动态、实时的完成消息的传递,且具有高效的交互性,能更有效的处理客户请求,其运行时所需环境及工作流程和各模块的工作原理将在本文依次介绍,并且文中提供了全部程序源代码。

1.1JAVA的网络功能与编程

1.1.1JAVA概述

Java是一个由Sun公司开发的新一代高级编程语言。

它可在各式各样不同机器、不同操作平台的网络环境中开发软件。

不论你使用的是哪种WEB浏览器,哪种计算机,哪种操作系统,只要WEB浏览器上面注明了“支持Java”,并且装有JAVA控件,你就可以看到生动的主页。

Java正在逐步成为Internet应用中最主要的开发语言,它彻底改变了软件开发模式,带来了自PC机以来又一次革命,为飞速发展的网络世界增添了新的动力。

Sun的Java语言开发小组成立于1991年,Sun内部人员把这个项目称为Green。

该小组的领导人是JamesGosling,是一位非常杰出的程序员。

在研发过程中,Gosling深刻体会到消费类电子产品和工作站产品的差异:

消费类电子产品要求可靠性高、费用低、标准化、使用简单。

Gosling在开始写Java时,并不局限于扩充语言机制本身,更注重于语言所运行的软硬件环境。

他要建立一个系统,运行于一个巨大的、分布的、异构的网格环境中,完成各设备之间的通信与协同工作。

Gosling在设计中采用了虚机器码方式,即Java语言编译后产生虚拟机,虚拟机运行在一个解释器上,每一个操作系统均有一个解释器。

这样一来,Java就成了跨平台语言。

PatrickNaughton也是Sun公司的技术骨干,曾经是OpenWindows项目的负责人。

当Naughton加入该小组后,工作进展神速。

经过17个月的奋战,整个系统胜利完成。

它是由一个操作系统、一种语言、一个用户界面、一个新的硬件平台、三块专用芯片构成的。

通常情况下,这样的项目在Sun公司要75个人干三年。

项目完成后,在Sun公司内部做了一次展示和鉴定,观众的反应是:

在各个方面都采用了崭新的、大胆的技术。

到了1994年,internet已如火如荼地发展起来。

Gosling意识到internet需要一个浏览器,它不依赖于任何平台,它应是一种实时性较高、可靠安全、又有交互功能的浏览器。

于是Gosling决定用Java开发一个新的Web浏览器。

  Java虽出现的时间不长,但已完全被业界接受,IBM、Apple、SiliconGraphics、HP、Oracle、Toshiba、Netscape和Microsoft等大公司已经购买了Java的许可证。

Microsoft还在其Web浏览器Explorer3.0版中增加了对Java的支持。

众多的软件开发商也开发了许多支持Java的软件产品。

如:

Borland公司的基于Java的快速应用程序开发环境Latte;Metrowerks公司和NaturalIntelligence公司分别开发的基于Machintosh的Java开发工具;Sun公司的Java开发环境JavaWorkshop;Microsoft也开发出系列Java产品。

数据库厂商如Sybase,Oracle等都在开发支持HTML和Java的CGI。

Intranet正在成为企业信息系统最佳的解决方案。

它的优点表现在:

便宜、易于使用和管理。

用户不管使用何种类型的机器和操作系统,界面是统一的Web浏览器,而数据库、Web页面、应用程序则存在WEB服务器上。

未来的计算方式,每个HomePage的实质是一个多媒体应用程序,这些程序用Java来开发。

Java应用程序运行在不同的机器、不同的操作系统之上,甚至于电冰箱、烤面包箱、防盗电子设备之中,用Internet把所有的电子设备连接起来,通过TCP/IP进行信息的交流。

Java的出现是计算机信息交换的一个重要里程碑。

在单机时代,程序进程之间靠共享存储进行变量交换;在网络时代,运行在不同主机上的程序按网络协议进行二进制字符流交换,语义由交换双方维护;在Java时代,运行在网络上的程序进程交换的是小应用程序。

随着Internet的崛起、Java的诞生,巨型而臃肿的应用软件开始向小型化发展,由众多生活在Internet上的小应用程序相互协作完成信息的处理与传递。

Java会加速应用软件的小型化、网络化的趋势。

随着互联网的发展,软件必然是面向大众的,薄利多销将是网络应用软件的重要特点。

信息的价值在于使用和共享,Internet和Web是信息的使用和共享最快捷、最便宜的方式,Word将演化成为Web写作工具,Excel则将演化成Web电子表格。

1.1.2JAVA的特点

(一)JAVA的主要特点

Java语言有下面一些特点:

简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。

1.简单

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务。

Java略去了运算符重载、多重继承等模糊的概念,且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。

2.面向对象

Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。

3.分布性

Java是面向网络的语言。

通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。

4.安全性

用于网络、分布环境下的Java必须要防止病毒的入侵。

Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。

5.体系结构中立

Java解释器生成与体系结构无关的指令,Java程序可在任意的处理器上运行。

这些指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

6.可移植性

与平台无关的特性使Java程序可以方便地被移植到网络的不同机器上。

另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。

7.解释执行

Java解释器直接对Java字节码进行解释执行。

字节码本身携带了许多编译时信息,使得连接过程更加简单。

8.高性能

和其它解释执行的语言如BASIC不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。

9.多线程

多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。

通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。

10.动态性

Java的设计使它适合于一个不断发展的环境。

在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。

并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

(二)丰富的类库Java提供了大量的类以满足网络化、多线程、面向对象系统的需要。

1.语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。

2.实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。

3.输入输出包用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入

4.低级网络包用于实现Socket编程。

5.抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得Java可以移植到不同平台的机器。

6.网络包支持Internet的TCP/IP协议,提供了与Internet的接口。

它支持URL连接,WEB即时访问,并且简化了C/S模型的程序设计。

1.1.3JAVA语言在网络上的应用

Java程序可以获取网络上结点的图象、声音、HTML文档及文本等资源,并可以对获得的资源进行处理。

在编程处理上,一般先生成一个URL类型的对象,然后用Java中相应的方法获取该对象所代表的资源。

1.2JavaBeans技术

JavaBeans就是Java的可重用组件技术。

JSP通过JavaBeans来扩充复杂的功能,如文件上载、发送email以及将业务处理或复杂计算分离出来成为独立可重复利用的模块。

JSP对于在Web应用中集成JavaBeans组件提供了完善的支持。

这种支持不仅能缩短开发时间,也为JSP应用带来了更多的可伸缩性。

JavaBeans组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。

由于JavaBeans开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理过程实际上被封装到了JavaBeans中。

1.3IP/TCP协议常识

(1)IP/TCP协议的特点:

TCP/IP(TransmissionControlProtocol/InternetProtocol)是传输控制协议/网际协议的缩写,TCP/IP是当今网络互联的核心协议。

TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。

IP协议的作用:

第一,它是网络层的协议,提供互联网上数据传输的统一格式。

第二,提供不可靠的无连接的服务。

第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。

TCP/IP协议具有以下特点:

1、协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。

2、统一分配网络地址,使得每个TCP/IP设备在网络中都具有唯一的IP地址。

3、实现了高层协议的标准化,能为用户提供多种可靠的服务。

(2)TCP/IP协议进行传输数据传输的过程:

应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP数据包封装在IP包内,通过网络送给目的TCP。

接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。

TCP调用IP接口,向TCP提供所有TCP需要的服务。

(3)端口号:

有的时候,一个IP地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。

端口实际是一个16位长的地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的客户端应用程序。

在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。

1.4Socket的简介

Socket,简称套接字,用于实现网络上客户和服务器之间的连接。

也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。

具体的说:

一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。

服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。

Socket程序的工作过程:

1、建立Socket连接:

在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。

2、数据通信:

利用虚拟连接通道传送数据信息进行通道。

3、关闭:

通信结束时,再将所建的虚拟连接拆除。

具体如下:

Socket套接字原理图

 

1.5对等网络

1.5.1对等网络发展历史

对等网络(peertopeer,简称P2P)应用最初出现时和现在并不相同。

事实上可以认为它是若干不同技术的产物。

下面是两个导致P2P技术发展最重要的趋势:

首先是某些新技术与软件工程结合,形成一种将工作分散的趋势。

P2P计算正是这种分散工作趋势的必然结果。

其次从工程的角度看来,在企业应用集成等因素的驱动下,过去十年渐渐形成一种从集中系统转向分布式系统的趋势。

对功能强大的网络计算机的需求以及昂贵的带宽开销,是对这种趋势影响最大的两个因素。

为了提高效率,P2P计算由许多互相连接的同位体组成。

除了技术方面之外的社会因素也是一个重要原因。

毫无疑问,人们现在对P2P计算技术的热切关注起源于Napster,Scour,Gnutella,以及即时通讯类的相关产品。

这些产品提供了所谓的“killerapps”功能,能够将P2P技术中的一部分下放到客户端手中。

这种第一手的体验,使得人们越来越关注P2P技术。

1.5.2对等网络的概念

目前,业界对P2P的定义还没有一个标准的说法,Intel将P2P技术定义为“通过系统间的直接交换达成计算机资源与信息的共享”。

IBM则把它看成是由若干互联协作的计算机构成的系统并具备如下若干特性之一:

系统依存于边缘化设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益;系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在而构成一个虚拟或实际的群体。

简单地说,P2P技术是一种用于不同PC用户之间、不经过中继设备直接交换数据或服务的技术。

它打破了传统的C/S模式,在对等网络中,每个节点的地位都是相同的,具备客户端和服务器双重特性,可以同时作为服务使用者和服务提供者。

1.5.3对等网络的主要系统结构

PZP模式的变化经历了集中式、分布式和混合式3个阶段。

(1)集中式对等网络

集中式P2P模式由一个中心服务器来负责记录共享信息以及反馈查询;每一个对等实体要对它所需共享的信息以及进行的通信负责。

这种形式具有中心化的特点,但是它不同于传统意义上的C/S模式。

集中式P2P模式则是所有网上提供的资料都存放在提供该资料的客户机上,服务器上只保留索引信息,此外服务器与对等实体以及对等实体之间都具有交互能力。

集中目录式PZP模型还存在很多问题,主要表现为:

●中央服务器的瘫痪将导致整个网络的崩溃,可靠性和安全性较低:

●随着网络规模的扩大,中央目录服务器维护和更新的费用将急剧增加,所需成本过高;

●中央服务器的存在引起共享资源在版权问题上的纠纷,这也是直接导致Napster破产的原因;

●缺乏有效的强制共享机制,资源可用性差。

集中式P2P可提供中心服务器目录检索、管理服务和标准的点到点通信,具有高效的检索和低效的交换服务的特点。

集中式P2P对小型网络而言在管理和控制方面占有一定的优势,但对大型网络并不适合。

(2)分布式对等网络

在分布式P2P中,对等机通过与相邻对等机之间的连接遍历整个网络体系。

每个对等机在功能上都是相似的,并没有专门的服务器,而对等机必须依靠它们所在的分布网络来查找文件和定位其他对等机。

以Gnutella网络为例,一台新对等机首先通过访问某特殊站点提供的主机缓存服务机制来得到一台活动对等机地址,通过与它建立一个连接将自己接入Gnutella网络;接着,该新对等机主动探查网络中的其它对等机,找到与之相邻的对等机节点,在进行文件查找时,该对等机首先向与之相邻的所有活动对等点发送一个查询描述符Query,在其他对等机接收到该查询描述符后,检查本地是否有符合查询请求的文件内容,如果有,则按查询描述符的发送路径返回一个查询响应描述符QueryHit,无论本地是否存在符合查询请求的文件内容,其他对等机都会将该查询包通过扩散方式继续在网络中传递,直至查询包中TTL属性值递减为0时才停止继续转发;一旦定位了响应查询文件的对等机之后,就与响应对等机建立TCP连接,通过HTTP协议从响应对等机中下载自己查询的文件。

文件的传输不再经过Gnutella网络进行。

分布式对等网络模型也存在很多弊端,主要表现在以下方面:

●搜索请求要经过整个网络或者至少是一个很大的范围才能得到结果,因此,这种模式占用很多带宽,而且需要花费很长时间才能有返回结果。

●随着网络规模的扩大,通过扩散方式定位对等点及查询信息的方法将会造成网络流量增加,导致网络拥塞,最终使Gnutella网络被分片,因此,网络的可扩展性不好,不适合大型网络。

●纯分布式的P2P模式很难被企业所利用,因为它缺少对网络上的用户节点数以及对他们提供的资源的一个总体把握。

●安全性不高,易遭受恶意攻击。

这种无中心、纯分布式系统的特点是:

它不再是简单的点到点通信,而是更高效、更复杂的网络通信。

(3)混合P2P网络

集中式P2P有利于网络资源的快速检索,并且只要服务器能力足够强大就可以无限扩展,但是其中心化的模式容易遭到直接的攻击:

分布式P2P解决了抗攻击问题,但是又缺乏快速搜索和可扩展性。

混合式P2P结合了集中式和分布式P2P的优点,在设计思想和处理能力上都得到了进一步的优化。

它在分布式模式的基础上,将用户节点按能力进行分类,使某些节点担任特殊的任务。

这些节点共分为3种:

●用户节点:

普通节点,它不具有任何特殊的功能。

●搜索节点:

处理搜索请求,从它们的孩子节点中搜索文件列表,这些节点必须有128kbit/sRAM的网络连接速度,建议使用高性能的处理器。

●索引节点:

连接速度快、内存充足的节点可以作为索引节点。

索引节点用于保存可以利用的搜索节点信息,并搜集状态信息,维护网络结构信息。

在第三代P2P的软件体系结构中,采用了混合式P2P。

这种模式的关键之一是引入了索引节点,索引节点不会直接连接到有版权的资料上,它就像搜索引擎一样,只是搜索和所需资料相关的地址,至于用户到底连接下载了什么内容则和它无关。

这种模式的关键之二是引入搜索节点,搜索节点管理着所属用户的文件列表。

用户节点通过索引节点获得搜索节点信息,之后用户节点就与获得的搜索节点相连,每一次查询都通过该搜索节点进行。

当用户发出搜索请求后,如果和用户节点直接相连的搜索节点查询结果达到100个就停止;如果不足100个,就向相邻的搜索节点发出请求,如果查询结果还不够,就继续向外快速发散,直到所有的搜索节点都被搜索到为止。

若所有的搜索节点都被访问过,就意味着整个网络上的节点都被搜索到了,其速度要比纯P2P模式快得多。

 

2JAVAqq局域网聊天程序的需求

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1