基于Java的博网即时通讯软件的设计与实现
摘 要
即时通讯软件即所谓的聊天工具,其主要用途是用于文字信息的传递与文件传输。使用ECLIPSE作为即时通讯软件的开发工具,使用Socket建立通讯渠道,多线程实现多台计算机同时进行信息的传递,SWING技术等进行实际开发相对比较合适。通过一些轻松的注册登录后,在局域网中即时聊天便可以成功进行。
关键字 :即时通讯软件,局域网聊天,Java,Socket
1 引言
1.1 开发背景
随着信息社会的快速发展,网络作为改变世界的最重要的因素。众多的企业纷纷使用局域网聊天来满足工作与交流高效、快速执行的需求。企业中使用内部局域网可以使内部信息交互的过程得以简化,从而达到提高工作效率的目的[1]。所以经上所述,公司内部使用即时通讯的方式在各台计算机之间进行交流已经是时代发展的趋势。
即时通讯软件即所谓的聊天工具,作为进行文字传输、文件传输的工具被使用在互联网的客户端上。从专业角度来介绍,即时通讯软件一般分为依赖于服务器的与依赖于P2P的[2]。
从现状来看,互联网上深受用户喜爱的即时通讯软件主要有以下几个:微信、QQ、YY、飞秋等等[5]。
1.2 开发意义
如今的社会是信息社会,正是因为用户大量的需求促进了即时通讯的开发,信息快速的传递越来越受到重视同时使得互联网技术越来越成熟,在其中即时通讯软件承担了相当一部分的作用,在这些软件中,一些优秀且易用的聊天工具被各位用户所喜爱[3]。在中国,腾讯QQ无疑取得了极大的成功,简单易用,功能齐全,在满足用户基本需求的同时为各位用户提供其它使人称心的功能。即时通讯软件之所以能够取得成功,正是因为其适应了时代,符合了信息时代用户的需求,它不仅可以提供全面,大量信息给用户,同时也可以使用户的生活更加的精彩,成功满足了自身商业利益的获取也构建了人们和谐便利的生活。
Socket是即时通讯系统实现的核心技术,可以通过端口设置与IP地址来构建通讯的桥梁,以便各类信息的发送与接收。在这个软件中可以与陌生用户或者你已加入用户列表中的用户进行信息的传递来完成基本的交流,系统在后续中是会继续进行功能的完善与拓展,来实现文件传输,语音传输等各种方式来加强用户的体验,为用户带来极大的便利。
2 系统设计相关技术
2.1 Java语言
博网即时通讯系统之所以最终采用Java语言进行开发,主要是由于该语言可以跨平台的特性使得其在开发语言中处于优势地位,并且简单易用和安全性也是Java的重要特点[4]。正因如此游戏开发、安卓开发、互联网web系统开发等领域都有Java的身影。它不但包含了C++语言中Object Oriented的特性,而且优化了C中非常困难复杂的指针、多继承等特点,同时又增加了垃圾回收的机制(GC)简化了程序员的开发,其在相应程序运行完成后会自动销毁与清空被占用的内存,而这些种种的基本特点确赋予了它更加优异的性能,因此博网即时通讯系统选用Java语言进行开发。
2.2 MySQL数据库
MySQL的是使用C和C++编写的轻量级关系型数据库,经过了多种编译器处理之后代码的可移植性非常高。支持了多种操作系统的同时还为各式各样的编程语言提供了应用程序接口。从算法的角度优化执行SQL语句的能力,很大幅度的提高了执行效率。提供用管理工具。是一个可以处理千万级别记录的即强大又轻量的数据库软件[5]。
想对于其他数据库,比如Oracle之类来说,MySQL的规模是偏小的,但同时它也是较轻便的,它对计算机资源占用较少,确能提供用户和一些规模不大的企业足够的功能,所以MySQL是足够我们使用的同时减轻了我们的成本。
2.3 Socket
Socket是用于连接通信的双方的开发技术,使其能够构建通信的桥梁,进而进行信息的传递,当一方连接另一方时要确认对方的IP与Port,而服务器端则需要打开相应的端口号等待客户端进行连接[6]。
具体的说:在运行该系统时,需要先启动服务器端,以打开服务器端的连接端口并进行监听,等待其他的用户链接,当其他用户的链接信息传来时,该用户就会被赋予相应的端口号,然后与服务端进行链接,服务器端与客户端之间的通信渠道而后被建立,构建成功的通信渠道,可以通过编写socket来相互通信,若有新的客户端请求来链接,则服务器端自身则需要获得一个新的端口号来执行被占用的旧的端口号的监听工作,以便于应答新的客户端请求,真正实现多客户的服务功能,使多个客户可以通过服务器作为媒介从而进行轻松且简便的聊天与各种功能[7]。
Socket程序的工作过程:
-
建立Socket连接 :当一方连接另一方时进行通信时要确认对方的IP与Port,然后发送请求并等待回应确认是否已经接受到自己的链接请求
-
数据通信 :使用上一步所建立的连接通道进行信息的传输与交互
-
关闭 :信息的传输与交互完毕后,将构建的连接通道拆除,以释放资源,方便别的客户端进行链接
Socket信息交互原理图如图1所示:
3 系统需求分析
3.1 可行性分析
对于程序的设计过程中可行性分析是重中之重,优秀的分析可以极大的节约成本,为开发的顺利铺垫坚实的道路。因此要对系统分别进行技术可行性、经济可行性、管理可行性三方面的全面分析。
3.1.1 技术可行性
互联网技术的迅速发展,使得互联网成为了各类企业必须涉及的部分,同时互联网技术的发展更为成熟,使得各种基于互联网开发的信息系统变成了企业公司、部门单位提高工作效率的优秀方法[8]。另外,即时通讯系统的开发已经很多的实例,技术的要求度并不高,各类进行开发的软件获取并不困难,所以成功开发是可行的。
-
操作系统 : 能够支持Eclipse运行的各类系统均可
-
开发软件 :myeclipse 或者 eclipse
-
Web Server :JBoss、Weblogic或者tomcat
-
JDK版本 :jdk 6.0 以上版本
Java是一门简单易用而且功能强大的技术,由于该语言可以跨平台的特性使得其在开发语言中处于优势地位,它不但包含了C++语言中Object Oriented的特性,而且优化了C中非常困难复杂的指针、多继承等特点,同时又增加了垃圾回收的机制(GC)简化了程序员的开发,及时释放存储空间让开发者不在为此耗费精力。
3.1.2 经济可行性
从经济方面观察,在该即时通讯软件的开发过程中,消耗的资源并不难以提供与维持。而且软件价值方面来观察,在软件设计成功后是可以为用户提供便利的,并且对于开发初学者来说是有一定参考价值的,所以通过以上两方面来看这一点是可行的。
3.1.3 法律可行性
即时通讯系统是毕业设计,不会用于商业用途,所以并不会与法律的相关规定产生冲突,所以该方面是可行的。
3.1.4 概述
基于以上分析,本软件各部分都是符合原则的,而且我们认为,即时通讯软件是受到人们足够重视的。而且在即时通讯系统设计的过程中是可以逐渐了解用户的真实需求的,在理解并实现的过程中对自我的提升是极大的,所以该系统的开发是有价值的。
3.2 需求分析
对软件的将来要实现的功能假象就是需求分析的过程,必须要确认用户的需求和目的,准确定位目标功能点,接着对目标进行分析提出解决方案,全面地考虑用户需要哪些功能,这些功能中,哪些是需要做的很完善的,哪些只需要有该功能就可以了;哪些是需要着重用户体验,哪些只要操作性强,所以在开发博网即时通讯系统之前,进行需求分析是特别重要的。并且在开发的过程往往还会有需求的变更,开发会变得反复,有一定难度。其中的难点包括:供给与需求交流上的困难,需求不断的动态变化、后续系统维护修复。这些都是决定一个软件生命周期的重要因素,并且需求分析的结果往往能够把控整个开发过程的大体方向,所以在系统的开发中做需求分析是很必要的。
- Server方面
- 运行监控 ,打开Server,执行对其它用户的监控
- 关闭监控 ,关闭Server,不在对其它用户进行监控
- 阅览用户信息 ,阅览已登录用户信息
-
管理用户 ,强制使被选择的用户退出登录状态
-
Client方面
- 申请账号功能 ,使用者有权限在启动客户端后进行注册以及登录
- 添加好友功能 ,用户将陌生人加为好友
- 删除好友功能 ,用户有权限可以删除好友
- 修改个人资料功能 ,用户有权限可以修改以往设置的所有基本信息
- 修改头像功能 ,用户有权限能够修改自己现在的头像
- 即时聊天功能 ,用户之间有权限与拥有账号的用户进行即时的聊天
- 查看聊天记录功能 ,用户有权限查看与好友过往的聊天记录
程序工作原理图如图2所示:
3.3 系统流程图
客户端原理图如图3所示:
服务器端原理图如图4所示:
3.4 非功能性需求
3.4.1 系统的安全性
系统的安全性从来都是不可忽视的,所以在数据的处理过程中,要对数据进行多层的加密措施,以此来确保系统安全可靠。
所有的系统必须保证的方面正是数据的一致与完整,所以在系统中产生的数据必须进行定期的确认与核对,同时为了保证如果系统的突然故障或当机而导致数据的丢失,所以我们还要做好数据的备份工作,而且必须确保系统可以安全高效的长期运行,相应的网路防火墙是其必须的,同时数据的加密工作也必须做好,而一个良好的系统也必须有能支持它的环境,所以硬件配置也格外需要注意。
3.4.2 系统的响应时间
对于一个系统来说,响应时间是判定系统质量的一个重要指标,所以提高响应时间是非常有必要的,所以在满足功能的基础上,应该在各个角度缩短信息传递的间隔,例如在用户进行登录与即时聊天时,不可以让用户由于等待而产生烦躁。
3.4.3 系统的可扩展性
对于一个聊天程序来说,系统需要注意的是避免在开发过程中将代码写死,将代码留有一定的拓展空间是必须的,以方便后续功能的完善与系统的漏洞的弥补,所以系统在开发过程中应该设定一套开发规则,以明确开发的各类文件配置与设定,以为后续的维护与功能的拓展提供极大的便利,使系统的代码质量获得提升,也使功能的体现更显得自然。
3.4.4 系统的易维护和易用性
聊天系统是提供给用户使用的,用户也许并不了解系统各种的设置,所以面对突发状况应对能力较差,所以此时就需要开发者来为其提供足够的良好的人机交互界面与优秀的各类提示,以便用户对系统的熟悉与对于系统简单问题的处理。
该聊天系统是要长期运行的,所以作为开发者应该考虑到用户在日常工作中可能产生的滥用与错误的使用方法,所以当面对这些问题时,开发者应当让系统自动作出各种应急措施或者给用户提供足够的提示与指导。
3.4.5 系统的先进性
Socket技术已经成熟,而且在作为网络通信方面Socket技术是非常流行的,并且本系统使用跨平台的JAVA技术编写,所以对于各种操作系统来说兼容性比较强。
4 系统设计
4.1 系统功能结构
该即时通讯系统是有两部分组成,服务器端可以通过启动来监听客户端信息的传递与执行各种对客户端的监控,客户端则是通过人性化与美观的界面来使用户可以易上手和舒适的体验快速与简便的通讯[9]。
应用从这两部分分别进行了详细的功能设计,服务器端功能主要为启动对于客户端的监听与关闭监听,还有对于已注册用户的实时监控与管理,客户端功能主要为使用者该软件账号的申请与进入操作界面,还有自己资料的修改以及对于其他账号好友的添加与管理等等。
软件功能层次图如图5所示
4.2 数据库设计
数据库是该即时通讯系统的中枢结构,进行信息处理的各个部分都是在数据库的基础上的,从而能够达成对于各类数据安全完整的存储,并进行合理的运用[10]。有必要时可以设置数据字典,数据字典对于开发非常的有效,它的存在避免了程序员之前互相作繁杂的沟通,大家按照统一的标准来进行,即保证了效率也提高了整体的可维护性,下面是必须要注意的一些关键点:
-
性能 :数据库必须具有足够能力进行数据管控
-
兼容性 :数据库是否支持开发所需的其他环境
-
封闭性 :数据库对于数据的存储与处理是否足够保密
-
可靠性 :数据库能不能承担对于数据的管理与传递
-
并行性 :数据库是否可以并行运行在多节点上
-
可操作性 :数据库是否在使用前需要大量时间学习
根据该即时通讯系统开发时的各类现状需求,我们最终选择了MySQL作为信息处理的载体。
4.2.1 概念结构设计
我们将系统中用到的各类数据抽象成各种数据体系,这些数据类型所组建成的体系正是概念结构的构建过程,进而组建全局的概念结构。
用户信息实体属性图
好友实体属性图
账号实体属性图
4.2.2 逻辑结构设计
逻辑结构设计则是把上一步设计好的E-R图结构转换为系统中相应的各类数据对应的逻辑结构。而E-R图向关系结构的过度,正是将各类实体与实体的对应关系进一步具体化,这是必要的,也是一个难点所在。
实体之间的关系是需要分为下述几种角度分析的:
-
如果博网即时通讯系统中实体间联系是1:1,则关系模式是自由的,可以与其他任何的关系模式结合
-
如果博网即时通讯系统中实体间联系是1:n,则应将单独那一端的关系码列入其他端构建的各类结构中
-
要是博网即时通讯系统中实体间联系是n:m,则应将各端与各端的实体对应关系表清,实体的码与联系的属性正是关系的属性
基于上述原则,进而完成模型的转换。
4.2.3 物理结构设计
下述其遵守规则:
-
避免各类数据的交叉而导致内存的浪费,最好建立数据字典
-
开发与设定相匹配,避免导致混乱
-
数据之间的关系必须是合理的,是可以在后续功能的拓展后不会产生影响的
基于以上的考量,对本软件的信息结构如下:
基本信息表
好友表
账号表
5 系统实现
本系统运用socket开发技术作为构建信息传递的通道,MySQL作为数据库。只需在eclipse或者myeclipse环境中开发程序即可。
博网即时通讯系统在设计过程中数据的复杂程度并不高,所以MySQL已经可以满足需求,所以我们使用该软件作为数据的承载体。
5.1 系统运行环境和开发平台
软硬配置 | 具体描述 |
---|---|
显示器 | 亮度值200cd/m2以上 |
操作系统 | Linux或者windows系统 |
内存 | 4G |
CPU | Core I5、2.6GHz |
硬盘 | 320G |
网速 | 100Mbps以上 |
数据库 | MySQL5.5以上 |
开发工具 | Eclipse4.4,Dreamweaver |
Web Server | JBoss、Weblogic或者tomcat |
5.2 系统实现界面
5.2.1 控制端操作页面
图9是控制端操作页面,通过运行相应的文件,即可打开该服务器端界面,在这个界面可以对已经注册过的用户进行管理与监控,也可以对服务器进行的基本管控,在对话框中查看一些基本日志。
图10是打开运行后的服务器页面,能够看到可以对用户进行管理,并在对话框中会产生一些辅助日志。
5.2.2 用户端操作页面
用户申请账号如图11所示,是用户端进行账号申请的页面,用户需要在该界面进行相关信息的完善,然后即可注册成功。
图12是申请成功界面,申请成功后可以获得登录号码。
用户登录如图13所示,可以看到在该对话框中输入一些必要的信息即可完成登录,进入下一个界面。
图14是登陆后的用户界面,能看到没有任何好友,所以需要自己进行添加。
添加好友如图15所示,这是用户将陌生人加入列表中进行交互,搜索相应用户账号,则可以搜索到该账号的持有者,然后加入列表。
图16是用户进行已搜索到账号并进行添加的界面,当对应用户信息显示出来时,可以先查看该用户信息再选择是否添加该账户。
用户与其他用户进行交互方式如图17所示,是各位用户正在进行交互选择的页面,分为:信息传递,好友操作等等功能。
图18是用户根据对话框进入相应界面,然后进行下一步操作选择的用户基本操作页面。
更换头像如图19所示这是用户变更头像的界面。
图20是用户管理个人基本信息的界面。
即时聊天如图21是用户正在与其他用户进行信息的交互。
图22是用户之间的聊天界面,可以看到正在进行相互交流。
信息传递页面如图23所示,是各位用户进行信息传递的基本页面。
图24是用户的基本信息、控制端与各个用户均可以对其他用户进行基本信息的阅览。
移除该用户如图25所示,是用户将以添加账户进行移除的页面,用户有权限进行该操作。
6 系统测试
软件测试的意义在于,首先保障软件的质量,其次是对功能是否达到自己预期的一种测验,然后再对是否会存在与预期不同的结果。
软件的测试不仅仅在开发结束的时候需要进行一系列的测试,在开发的过程中也要不断的进行单元测试,来保证细节的完备,对问题的寻找也进行了简化。软件的质量由几个方面来决定:首先,是否在功能上达到了预期的要求。其次,是否对用户友好,对维护人员友好,这对软件的后期起到了很大的作用。最后考虑的是效率,冗余度,耦合度是否尽力减少,程序的依赖性会不会对后期维护造成困难。
6.1 测试内容
-
文档资料的核查 :博网即时通讯系统需遵循相关规则进行严密的核查
-
余量要求 :博网即时通讯系统测试的信息量,该方面不能低于使软件能够正常持续运行的基本指标
-
功能测试 :博网即时通讯系统前端与后端的测试必须进行各个功能的全面测试,不能出现疏漏
-
性能测试 :博网即时通讯系统在该方面的测试必须从满足用户需求这个基本点开始,对于系统的稳定性,各类突发情况的处理等等性能进行多方面充足检测
-
强化测试 :博网即时通讯系统的正常使用必须考虑到大量用户而产生的压力,所以对该方面同样必须进行足够的预期计算
6.2 测试预期结果
在即时通讯系统中,初步预估目标应是:
- 控制端
- 控制端能够打开并成功对其他用户进行监控
-
控制端能够在页面上对在线的账户进行管理
-
用户端
- 用户可以申请账号并进入用户端界面
- 用户可以改动其基本信息
- 用户可以将已申请账号的用户加入自己的列表中
- 用户可以与列表中的其他账号进行交互
- 用户有权限重复阅览过往的信息传递记录
- 用户可以将其他用户移出自己对话列表
6.3 测试用例
软件测试是一项极其重要且不可缺少的工作,在某些看上去不起眼的细节上通常会发生严重的软件故障。所以我们决定使用黑盒测试对其进行检测,黑盒测试的原理是将系统当成一个黑盒,不去重点关注内部的构造,用结果来证明功能是否完备。这种测试方式简单高效,但是对用例的丰富程度要求高,只要全面的多角度的用例才能更好地得到结果。根据测试用例测试结果如下:
6.3.1 服务器启动
旋转图片测试表如表5所示:
3.6.2 用户注册
用户注册测试表如表6所示:
6.3.3 添加好友
添加好友测试表如表7所示:
6.4 测试结果
在系统功能基本完成后,对该系统进行了全方位的整体功能进行了大量的测试,在测试的实施过程中产生大量的BUG与一些没有注意到的错误,后经过对于代码的审查与调试,已将程序错误基本解决,后有进行的充足的各类测试,现系统已完成各项测试,成功达到了预期所设定的目标。
在图26中能够观察到,当在使用的客户数偏小是,软件的应答效率很高,其延迟很低,但客户量的逐渐上升时,响应时间并没有出现很高的提升,所以在性能方面,该系统已满足用户使用需求。
在根据得到以上各类信息后,本软件测试阶段的工作顺利完成,系统已经基本可以实现预期的效果。
参考文献
[1] 罗军舟等编著.《TCP/IP协议及网络编程技术》[M].清华大学出版社.2004年.
[2] (英)萨默维尔.软件工程(第九版)[M].机械工业出版社,2011.05
[3] 黄永峰等著.IP网络多媒体通信技术[M].人民邮电出版社.2003年.
[4] 昊斯特曼 (Horstmann Cay S.),Gary Cornell著 叶乃文, 邝劲筠, 杜永萍译 JAVA核心技术[M]. 电子工业出版社,2011.
[5] 祝定泽,张海.My SQL核心内幕[M].北京:电子工业出版社.2009
[6] 姬猛洛,李军译. 即时消息传递系统编程源代码解析.北京:电子工业出版社,2002 .
[7] 张海藩.软件工程导论(第四版)[M]. 北京:清华大学出版社,2002
[8] 徐晓春. Java即时通讯系统[M]. 长春:吉林大学,2007
[9] 王大锋. P2P即时通讯软件监控系统的研究与实现. 北京:中国科学院研究生院软件研究所,2005.
[10] 庄成三,洪玫,杨秋.数据库系统原理及其应用[M].电子工业出版社,2000
参考文献
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 基于Flex框架的Web即时通讯系统的研究与实现(中国海洋大学·刘昭纯)
- 基于Node.js和WebSocket的即时通信系统的设计与实现(南京邮电大学·茆玉庭)
- 企业级即时通讯系统设计与实现(华南理工大学·余春贵)
- 面向中小企业的即时消息系统(山东大学·孙巍)
- 基于SSH框架模式的博客系统的设计与实现(西北师范大学·王刚成)
- 基于Java的企业信息系统的研究(天津大学·丁彦波)
- 基于Spring框架的短信通道系统的设计与实现(北京邮电大学·刘林华)
- 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊)
- J2EE轻量级框架构建即时通讯系统(华中科技大学·谢军)
- 基于Web文语转换通讯系统的设计与实现(华东师范大学·李伟)
- 基于J2EE的手机综合网站的设计与实现(吉林大学·宋微)
- 基于Node.js和WebSocket的即时通信系统的设计与实现(南京邮电大学·茆玉庭)
- 基于Openfire的即时通信服务端系统设计与实现(华中科技大学·陈理兵)
- 基于B/S的即时通讯多媒体工作平台设计与实现(山东大学·孔德龙)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码项目助手 ,原文地址:https://m.bishedaima.com/yuanma/35249.html