基于Java即时聊天系统的设计与实现.docx
- 文档编号:15330316
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:92
- 大小:432.86KB
基于Java即时聊天系统的设计与实现.docx
《基于Java即时聊天系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Java即时聊天系统的设计与实现.docx(92页珍藏版)》请在冰点文库上搜索。
基于Java即时聊天系统的设计与实现
基于Java即时聊天系统的设计与实现
本科毕业设计(论文)
基于Java即时聊天系统的设计与实现
学号:
05
学生姓名:
何晶
指导教师:
范忠诚
所在学院:
计算机科学技术学院
所学专业:
计算机科学与技术专业
2016年6月
摘要
伴随着互联网的高速发展,产生了一系列与互联网相关的新鲜事物,即时聊天系统就是其中最具代表性的产物。
即时聊天系统经过不断地发展,凭借其迅速、便捷、即时的特点,逐渐成为一种重要的信息交流工具,受到越来越多的网民的青睐。
即时聊天系统开发主要包括两个方面:
即时聊天系统服务器端设计、即时聊天系统客户端设计。
即时聊天系统服务器端设计主要通过Socket套接字建立服务器,服务器能够读取和转发从客户端发来的信息,并且能够刷新用户列表。
即时聊天系统客户端设计主要通过与服务器建立连接,从而使服务器端与客户端的信息进行交流。
在这里,网络通信机制原理得到了运用,通过直接继承Thread类来建立多线程。
同时,开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。
在网络编程中利用流来实现信息的交换,从而读取和发送信息。
即时聊天系统采用myeclipse为基本开发环境和java语言进行编写,通过不断修正和改进初始原型系统,直至此系统完全可行为止。
关键词:
即时聊天系统;套接字;Java
Abstract
Alongwiththehigh-speeddevelopmentofInternet,producedaseriesofnewthingsrelatedtotheInternet,instantmessagingsystemistheproductofoneofthemostrepresentative.Instantmessagingsystemthroughconstantdevelopment,withitsfast,convenient,real-timecharacteristics,becominganimportantcommunicationtool,getthefavourofagrowingnumberofInternetusers.Instantmessagingsystemdevelopmentmainlyincludestwoaspects:
instantmessagingsystemserverclient,instantmessagingsystemdesign.InstantmessagingsystemdesignmainlythroughtheSocketserverSocketserver,theservercanreadandforwardfromtheclient'sinformation,andbeabletorefreshtheuserlist.Instantmessagingsystemdesignmainlybytheclientandtheserverconnectionisestablished,whichmakestheservertocommunicatewiththeclient'sinformation.Here,theprinciplehasbeenusingnetworkcommunicationmechanism,throughdirectinheritanceforbuildingamultithreadedThreadclass.Atthesametime,theuseofcomputernetworkprogramminginthedevelopmentofthebasictheoryofknowledge,suchasTCP/IPprotocol,Client/Servermode(Client/Servermode),networkprogrammingdesignmethod,etc.Usingflowinnetworkprogrammingtoachievetheexchangeofinformation,soastoreadandsendinformation.InstantmessagingsystemusingmyeclipseasthebasicdevelopmentenvironmentandtheJavalanguagetowrite,byconstantlyrevisedandimprovedtheinitialprototypesystem,untilthesystemiscompletelyfeasible.
Keywords:
Instantmessagingsystem;socket;Java
第1章绪论
1.1课题背景
人类社会在不断的发展,从原始社会发展到如今高度发达的文明社会,离不开人类的团结协作及创造力,而交流便是人类在发展过程中至关重要的一项技能。
在人类漫长的发展过程中,交流的方式也在不断更新变化。
从最早的交流方式——直接交流(语言、文字等),到后来利用介质的交流方式——间接交流(飞鸽传书、烽火狼烟等),再到近现代利用工业革命的成果,创造出了远程交流方式(电报、电话等)。
而到了上世纪末,随着计算机技术和网络技术的高速发展,诞生了一种新型交流方式——即时聊天系统。
即时聊天系统在沟通、协作方面有着其它交流方式无法比拟的优势,它凭借方便、快捷、实时等特点得到了越来越多人的青睐。
本课题研究的就是基于Java语言的即时聊天系统。
即时聊天系统是为了满足各用户之间进行即时的信息交流而设计的一套系统,作为一种新型的通信和交流工具,即时聊天系统具有极其广泛的发展前景。
本系统的主要特性是能动态、实时的完成信息的传递,同时具有高效的交互性,更有效的处理客户请求,同时维护和更新也更加简易。
本文接下来会依次介绍即时聊天系统运行所需的环境及其工作流程和各个功能控件的工作原理,并且文中提供了部分程序源代码。
1.2国内外发展现状
1.2.1国外发展现状
当今国际上对网络通信系统研究的较好的公司有:
思科,Sun,Ms等公司,思科主要研究的是底层的传输;MS,Sun公司研究的是应用层。
其中MS公司凭借其在操作系统的垄断地位,为了在网络的发展中取得先机,采用了各种各样的手段。
但是,其捆绑的msn,无论从功能上,还是技术上来说,都不算是非常先进的。
这让人想起了当年的网景公司,网景只是生不逢时。
MS不择手段的想打跨网景,可见其对网络的重视。
如今,Sun公司在网络应用上捷足先登,凭借着Java,Sun在网络的应用上领先于MS。
微软,想用同样的办法搞跨对手,因此它拿出了Visualc#来对抗Java。
这些都是在应用层面的开发工具,应用层上的产品就更显种类繁多。
ICQ几乎是国际上通用的即时通信工具,由于在我国它的应用不是很广,所以其原理也很少被介绍。
Msn,是MS的产品,同样在国内没什么市场,所以对其原理也很少被讨论过[1]。
1.2.2国内发展现状
国内在应用层上的网络应用软件目前发展异常的火爆,因为我国有着网络应用的最大的市场。
现在国内网络的基础性建设发展迅速,应用软件也层出不穷。
不少厂商分别推出了自己的IM,如腾讯QQ、阿里旺旺、新浪UC、移动飞信等,这些都是我们所熟悉的PC端的即时通讯软件。
随着智能手机、平板电脑的普及,一些移动端的即时通信系统也如雨后春笋般涌现出来,如小米公司的米聊,腾讯公司的微信,还有年轻人之间很流行的陌陌、游戏玩家常用的YY语音等。
这些软件本身功能也越来越丰富,远远超出了单纯的即时聊天系统的范畴。
现在的即时通信系统不仅仅是人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台。
1.3开发目的和意义
在当今社会,不管是个人用户还是企业用户,对沟通的需求总是在不断地发展。
传统的沟通交流方式如电话、传真、邮件等已经不能完全满足人们学习、工作、生活的需要。
随着计算机软件、计算机网络和移动通信技术的发展融合,集方便、廉价、快捷、实时等优点于一身的即时聊天系统可以说是继电子邮件、万维网之后,互联网上最具有杀伤力的应用。
很难想象一台个人电脑没有安装像QQ这样的即时通讯软件。
虽然即时聊天系统设计的初衷是聊天,但正如前面所说,其功能已经超出了聊天的范畴,随着企业即时通讯工具(EIM)的出现,IM系统更是成了企业信息发布、资源共享、问题探讨和网络营销的一把利器。
通过现有的技术,企业完全可以摒弃通用的免费的即时通讯系统,转而根据自己企业的需求定制开发自己专属的内部即时通讯系统,以实现更好的管理,提高员工的工作效率。
我们的生活中沟通无处不在,即时聊天系统这类广泛使用的基础软件的研究开发意义深远。
对于个人用户而言,能够实现好友即时通讯,传递实时信息,让用户随时随地都可与好友保持畅快有效的沟通。
对于企业用户而言,能够实现建立员工交流平台,统一信息发布平台,减少运营成本,促进企业办公效率。
商业即时通讯系统的功能越来越多样化,一些功能也很新颖,如现在流行的语音对讲功能。
本系统不比商业系统,没有考虑过多的复杂性,主要实现了基本的通讯功能,以满足学习研究之用。
1.4系统设计的思想
基于Java技术的聊天系统主要是探索如何在Java技术下能够实现即时聊天的一些基本功能:
用户注册,用户登录,查找其他用户,添加删除好友,添加个性签名,发布和接收系统消息,实现一对一聊天,能够发送表情等功能。
论文的设计主要采用了两种研究方法:
一是文献资料研究的方法。
在研究聊天系统现实中,本人通过图书馆、电子图书馆学习了Java语言中的一些编程技术;二是理论与实际相结合,既然掌握了技术与方法,那么就应该快速的进行实践,在软件的设计过程中,才能够理解到理论与现实的差距,遇到棘手问题,应该快速查阅资料快速攻破。
第2章方案论证
2.1方案分析
经过认真的研究与分析,同时综合各种计算机高级语言的特征和适应范围,最终决定选择纯面向对象的Java语言来完成即时聊天系统的设计。
对于本系统的设计,可以采用C/S和B/S两种不同的模式。
在数据库方面,Hibernate和MyBatics都有着很强大的功能,而且Mysql和Oracle也有着不同的优缺点。
综上所述,可以得到以下两个方案。
方案一:
C/S模式+Hibernate+Oracle
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构,其优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。
对应的优点就是客户端响应速度快。
而且Hibernate对数据库进行的是重量级的封装,对整个运行速度不会很慢。
而且Oracle体积很大一般在几个GB的安装包,运行时它的内存一般是几百兆,但是Oracle集成的功能非常强大。
方案二:
B/S模式+MyBatics+Mysql
B/S(Browser/Server)结构即浏览器和服务器结构,它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
MyBatics是对数据库的轻量的一个封装,但是sql语句需要自己来设置,配置在xml文件中。
而MYSQL非常小,一般几十兆,对主机的内存占用也不是很大,安装方便。
2.2可行性分析
开发任何一个系统,都是要受到时间和资源等的一些限制。
因此,在每一个系统开发之前,都必须要进行可行性分析,这样就可以减少软件开发所带来的风险,也大大的避免了在物力、人力和财力上的浪费[2]。
本系统的可行性分析应包括四个方面:
经济可行性、技术可行性、操作可行性和法律可行性。
2.2.1经济可行性
计算机网络已经普及,因此在网络设备上不需要进行大的投入。
本系统如果采用一个MySQL数据库服务器,相对于Oracle数据库服务器成本偏低。
同时,本系统能够让人们的交流更加便捷,其带来的间接效益远远超过了其开发成本,所以在经济上本系统的设计是具有完全的可行性的。
2.2.2技术可行性
此系统可以使用MySQL存储用户信息,由于MyBatics对Sql语句的封装小,这会增加开发过程中的代码量,并且,Oracle运行时很占用内存,它集成了很多功能,而且我们用很多功能用不上,所以MySQLl是很满足我们的需求的。
MySQL作为一种关联数据库管理系统,将数据保存在不同的表中,是一个安全度高、可靠性好的并且能够支持面向对象设计的数据库系统。
同时,MySQL开放源码,速度快、总体拥有成本低等特点错误!
未找到引用源。
。
并且在易用性、可维护性、灵活性等方面也很好。
采用JDBC技术对其进行增删改查,使用套接字来实现网络上客户和服务器之间的连接,同时采用Hibernate框架来管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),并且提供数据查询和获取数据的方法。
所以从技术角度来看本系统的设计是具有完全的可行性的。
2.2.3操作可行性
一方面可以让本地机同时作为客户端和服务器实现一台机器上的即时通讯。
另一方面,只要一台以上计算机连接在同一个局域网内,并且在作为客户端机器的本系统中设置需要连接的作为服务器端机器的IP地址,本系统就可以实现局域网通讯,所以操作上完全不存在问题。
如果要实现internet上通讯,理论上只需要将服务器端运行在一个有固定IP的公网上就可以。
2.2.4法律可行性
本即时聊天系统的开发,不会侵犯到别人的专利版权,也不违反国家的相关规定,所以在法律上来说也是可行的。
2.3方案的确定
根据以上的分析和总结,很显然方案一更适合我们的完成系统设计。
因此,我们使用方案一来进行项目的开发。
2.4系统设计的相关技术
本即时聊天系统是基于Java语言的,采用C/S结构,使用MySQL存储用户信息,采用JDBC技术对其进行增删改查,使用套接字来实现网络上客户和服务器之间的连接,同时采用Hibernate框架来管理Java类到数据库表的映射,并且提供数据查询和获取数据的方法。
1、Java语言
Java是一种通过解释方式来执行的语言,其语法规则和C++类似。
同时,Java也是一种跨平台的程序设计语言[3]。
用Java语言编写的程序,可以运行在任何平台和设备上,如跨越IBM个人电脑、MAC苹果计算机、各种微处理器硬件平台,以及Windows、Unix、OS/2、MACOS等系统平台,真正实现“一处编写,到处运行”。
Java非常适合于企业网络和Internet环境,并且已成为Internet中最具影响力、最受欢迎的编程语言之一。
与目前常用的C++语言相比,Java语言简洁得多,而且提高了可靠性,除去了最大的程序根源错误,此外它还有较高的安全性,可以说它是有史以来最为卓越的编程语言。
Java语言编写的程序既是编译型的,又是解释型的。
程序代码经过编译之后转换为一种称为Java字节码的中间语言,Java虚拟机(JVM)将对字节码进行解释和运行。
编译只进行一次,而解释在每次运行程序时都会进行。
编译后的字节码采用一种针对JVM优化过的机器码的形式保存,虚拟机将字节码解释为机器码,然后在计算机上运行。
Java语言的特点包括:
简单、面向对象、分布性、可移植性、解释型、安全性、健壮性、多线程、高性能、动态。
2、MyEclipse简介
MyEclipse,是基于Eclipse开发的功能强大的企业级集成开发环境,主要用于Java、JavaEE以及移动应用的开发。
据官方介绍,诸如三星、IBM、戴尔、惠普、花旗集团、西门子、斯坦福大学、波音公司等知名机构均使用MyEclipse进行Java、JavaEE开发,80%以上的全球财富100强企业均是MyEclipse的用户。
MyEclipse提供了对UML、Ajax、Web、WebServices、J2EE、JSP、XML、Struts、JSF、JavaPersistence、EJB、扩展数据库以及各种应用服务器的集成支持[4]。
MyEclipse也全面支持各种主流的第三方框架,让你能够快速高效地进行开发工作。
此外,MyEclipse还全面支持各种基于Eclipse平台的插件,允许你自由定制或扩展个性化功能。
MyEclipse全面支持Eclipse开源平台的所有功能特性,如果你熟悉Eclipse,那么你能够轻松地上手MyEclipse,包括熟悉的Eclipse快捷键,而且使用MyEclipse完成某项任务往往要比使用Eclipse更加快速、简单[5]。
3、Oracle简介
OracleDatabase,又名OracleRDBMS,或简称Oracle。
是甲骨文公司的一款关系数据库管理系统。
它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。
它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
比如SilverStream就是基于数据库的一种中间件。
ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它[7]。
4、网络通信协议简介
网络通信协议为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。
网络通信的层次结构和网络通信的协议,是开发网络程序的基础。
目前在网络编程方面最常用的是TCP/IP和UDP通信协议。
通过这些协议,网络通信各主机可以用一种统一而非杂乱的规范,高效便捷地相互发送和接收消息。
本系统在通讯功能实现中采用了TCP传输协议,直接使用的Java API提供的类Socket和Serversocket等来实现。
(1)TCP传输协议说明
TCP协议是面向连接的协议,比如说在客户端A和B进行连接之前必须首先建立数据通路,就向打电话一样,在通话之前必须先拨号,等待对方的接听以后才能进行通话。
TCP协议中数据传输采取的是同步方式,当数据发送到对方时,必须等待接收方的应答信号后才能继续下一次的发送工作,即通常所讲的三次握手。
由于TCP协议采用的是这种连接方式,因此由它建立的连接是可靠的。
在网络不是十分理想的情况下,速度牺牲很大,但是却能够保证所传输的数据的正确性。
(2)UDP传输协议说明
UDP协议采用的是面向无连接的通信方式,它在通信前不需要提前建立通信链路,它是异步的,数据的发送比较迅速,不需要等待应答信号。
优点是发送速度较快,但是在数据的一致性方面不好,在网络差的情况下,容易丢失数据包。
另外,使用UDP传输数据时对数据是有大小限制的,每个被传输的包必须限定在64KB之内[6]。
(3)Java Socket(套接字)说明
在Java语言里,使用Socket(套接字)模型来封装网络传输的具体动作。
Java提供了Socket的相关包,Java中Socket的设计采用了面向对象的思路,模拟了TCP协议里客户端和服务器端的通信流程,并封装了创建连接、发送接收数据流、断开连接等方法。
所以,使用Socket包,程序员不仅可以创建客户端和服务器之间的通信信道,还能实现发送和接收数据流等的网络通信功能[8]。
针对一个特定的连接和通信过程,服务器和客户端程序里都有一个Socket对象,我们可以想象一下其场景,在通信过程中,有一条虚拟的“光缆”构架在服务器和客户端之间,光缆的两头都插在了Socket这“插座”里。
事实上,Java采用Socket包是对TCP协议的进一步抽象,更向程序员屏蔽了TCP通信的细节,具体表现在以下两方面 。
一、在使用Socket类里的方法建立信道的时候,Socket类屏蔽了通过三次握手建立信道的全部流程,直接向程序员返回信道类的句柄(Socket类的实例)或是出错信息。
二、Socket类向程序员屏蔽了服务器和客户端之间的物理硬件指标和底层的连接方式,所以我们在使用Socket类开发网络程序时,可以简单地调用其提供的方法来传输数据,而不必关心数据流的传输和接收方式。
5、C/S模式
20世纪90年代出现并迅速占据主导地位的一种计算模式为客户机/服务器模式,简称为C/S模式,它实际上就是把主机—终端模式中原来全部集中在主机部分的任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。
相对于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位:
一般在运算能力较强的计算机上安装服务器端程序,而在一般的PC上安装客户机程序。
正是由于个人PC机的出现使客户机/服务器模式成为可能,因为PC机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力[9]。
客户机和服务器之间通过相应的网络协议来进行通讯。
客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。
这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服务器两端是易于扩充的。
C/S模式是目前占主流的网络计算模式。
第3章需求分析
3.1系统基本功能描述
客户端可以实现注册,登录,即时聊天,相互之间收发文件,发送截图,查看历史聊天记录等功能。
收发消息时,可以实现离线接收。
服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。
服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。
在后台管理系统,可以到对用户进行增删改查,查看在线用户,和踢用户下线。
3.2系统需求分析
聊天系统不外乎两个方面,服务器端和客户端。
简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。
首先来看一下服务器端的任务:
(1)服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。
(2)服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。
以上就是服务器端最主要的两个任务。
不难看出,服务器端的任务并不复杂。
客户端应该完成的工作包括:
(1)与服务器端建立通信通道,向服务器端发送信息。
(2)接收来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 即时 聊天 系统 设计 实现