当前位置: 首页 > article >正文

基于java博网即时通讯软件的设计与实现【源码+文档+部署讲解】

目 录

1. 绪 论

1.1. 开发背景 

1.2. 开发意义

2. 系统设计相关技术

2.1 Java语言

2.2 MySQL数据库

2.3 Socket

3. 系统需求分析

3.1 可行性分析

3.2 需求分析

3.3 系统流程图

3.4 非功能性需求

4. 系统设计

4.1  系统功能结构

4.2  数据库设计

5. 系统实现

5.1  系统运行环境和开发平台

5.2  系统实现

6. 系统测试

6.1  测试内容

6.2  测试预期结果

6.3  测试用例

6.4  测试结果

7. 结语

参考文献

博网即时通讯软件的设计与实现

摘要:即时通讯软件即所谓的聊天工具,其主要用途是用于文字信息的传递与文件传输。使用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程序的工作过程: 

1、建立Socket连接:,当一方连接另一方时进行通信时要确认对方的IP与Port,然后发送请求并等待回应确认是否已经接受到自己的链接请求。 

2、数据通信:使用上一步所建立的连接通道进行信息的传输与交互。 

3、关闭:信息的传输与交互完毕后,将构建的连接通道拆除,以释放资源,方便别的客户端进行链接。

Socket信息交互原理图如图1所示:

图1  Socket信息交互图

    3  系统需求分析

3.1 可行性分析

对于程序的设计过程中可行性分析是重中之重,优秀的分析可以极大的节约成本,为开发的顺利铺垫坚实的道路。因此要对系统分别进行技术可行性、经济可行性、管理可行性三方面的全面分析。

1.技术可行性

互联网技术的迅速发展,使得互联网成为了各类企业必须涉及的部分,同时互联网技术的发展更为成熟,使得各种基于互联网开发的信息系统变成了企业公司、部门单位提高工作效率的优秀方法[8]。另外,即时通讯系统的开发已经很多的实例,技术的要求度并不高,各类进行开发的软件获取并不困难,所以成功开发是可行的。

(1)系统软件

操作系统: 能够支持Eclipse运行的各类系统均可

开发软件:myeclipse 或者 eclipse 

Web Server:JBoss、Weblogic或者tomcat

JDK版本:jdk 6.0 以上版本

(2)开发语言

Java是一门简单易用而且功能强大的技术,由于该语言可以跨平台的特性使得其在开发语言中处于优势地位,它不但包含了C++语言中Object Oriented的特性,而且优化了C中非常困难复杂的指针、多继承等特点,同时又增加了垃圾回收的机制(GC)简化了程序员的开发,及时释放存储空间让开发者不在为此耗费精力。

2.经济可行性

从经济方面观察,在该即时通讯软件的开发过程中,消耗的资源并不难以提供与维持。而且软件价值方面来观察,在软件设计成功后是可以为用户提供便利的,并且对于开发初学者来说是有一定参考价值的,所以通过以上两方面来看这一点是可行的。

3.法律可行性

即时通讯系统是毕业设计,不会用于商业用途,所以并不会与法律的相关规定产生冲突,所以该方面是可行的。

4.概述

基于以上分析,本软件各部分都是符合原则的,而且我们认为,即时通讯软件是受到人们足够重视的。而且在即时通讯系统设计的过程中是可以逐渐了解用户的真实需求的,在理解并实现的过程中对自我的提升是极大的,所以该系统的开发是有价值的。

3.2 需求分析

对软件的将来要实现的功能假象就是需求分析的过程,必须要确认用户的需求和目的,准确定位目标功能点,接着对目标进行分析提出解决方案,全面地考虑用户需要哪些功能,这些功能中,哪些是需要做的很完善的,哪些只需要有该功能就可以了;哪些是需要着重用户体验,哪些只要操作性强,所以在开发博网即时通讯系统之前,进行需求分析是特别重要的。并且在开发的过程往往还会有需求的变更,开发会变得反复,有一定难度。其中的难点包括:供给与需求交流上的困难,需求不断的动态变化、后续系统维护修复。这些都是决定一个软件生命周期的重要因素,并且需求分析的结果往往能够把控整个开发过程的大体方向,所以在系统的开发中做需求分析是很必要的。

Server方面:

运行监控,打开Server,执行对其它用户的监控。

关闭监控,关闭Server,不在对其它用户进行监控。

阅览用户信息,阅览已登录用户信息。

管理用户,强制使被选择的用户退出登录状态。

Client方面:

申请账号功能,使用者有权限在启动客户端后进行注册以及登录。

添加好友功能,用户将陌生人加为好友。

删除好友功能,用户有权限可以删除好友。

修改个人资料功能,用户有权限可以修改以往设置的所有基本信息。

修改头像功能,用户有权限能够修改自己现在的头像。

即时聊天功能,用户之间有权限与拥有账号的用户进行即时的聊天。

查看聊天记录功能,用户有权限查看与好友过往的聊天记录。

程序工作原理图如图2所示:

图2  程序工作原理

3.3 系统流程图

客户端原理图如图3所示:

图3  客户端流程图

服务器端原理图如图4所示:

图4  服务器端流程图

3.4 非功能性需求

(1)系统的安全性

系统的安全性从来都是不可忽视的,所以在数据的处理过程中,要对数据进行多层的加密措施,以此来确保系统安全可靠。

所有的系统必须保证的方面正是数据的一致与完整,所以在系统中产生的数据必须进行定期的确认与核对,同时为了保证如果系统的突然故障或当机而导致数据的丢失,所以我们还要做好数据的备份工作,而且必须确保系统可以安全高效的长期运行,相应的网路防火墙是其必须的,同时数据的加密工作也必须做好,而一个良好的系统也必须有能支持它的环境,所以硬件配置也格外需要注意。

(2)系统的响应时间

对于一个系统来说,响应时间是判定系统质量的一个重要指标,所以提高响应时间是非常有必要的,所以在满足功能的基础上,应该在各个角度缩短信息传递的间隔,例如在用户进行登录与即时聊天时,不可以让用户由于等待而产生烦躁。

(3)系统的可扩展性

对于一个聊天程序来说,系统需要注意的是避免在开发过程中将代码写死,将代码留有一定的拓展空间是必须的,以方便后续功能的完善与系统的漏洞的弥补,所以系统在开发过程中应该设定一套开发规则,以明确开发的各类文件配置与设定,以为后续的维护与功能的拓展提供极大的便利,使系统的代码质量获得提升,也使功能的体现更显得自然。

(4)系统的易维护和易用性

聊天系统是提供给用户使用的,用户也许并不了解系统各种的设置,所以面对突发状况应对能力较差,所以此时就需要开发者来为其提供足够的良好的人机交互界面与优秀的各类提示,以便用户对系统的熟悉与对于系统简单问题的处理。

该聊天系统是要长期运行的,所以作为开发者应该考虑到用户在日常工作中可能产生的滥用与错误的使用方法,所以当面对这些问题时,开发者应当让系统自动作出各种应急措施或者给用户提供足够的提示与指导。

(5)系统的先进性

Socket技术已经成熟,而且在作为网络通信方面Socket技术是非常流行的,并且本系统使用跨平台的JAVA技术编写,所以对于各种操作系统来说兼容性比较强。

    4  系统设计

4.1  系统功能结构

该即时通讯系统是有两部分组成,服务器端可以通过启动来监听客户端信息的传递与执行各种对客户端的监控,客户端则是通过人性化与美观的界面来使用户可以易上手和舒适的体验快速与简便的通讯[9]。

应用从这两部分分别进行了详细的功能设计,服务器端功能主要为启动对于客户端的监听与关闭监听,还有对于已注册用户的实时监控与管理,客户端功能主要为使用者该软件账号的申请与进入操作界面,还有自己资料的修改以及对于其他账号好友的添加与管理等等。

软件功能层次图如图5所示

图5  软件功能层次图

4.2  数据库设计

数据库是该即时通讯系统的中枢结构,进行信息处理的各个部分都是在数据库的基础上的,从而能够达成对于各类数据安全完整的存储,并进行合理的运用[10]。有必要时可以设置数据字典,数据字典对于开发非常的有效,它的存在避免了程序员之前互相作繁杂的沟通,大家按照统一的标准来进行,即保证了效率也提高了整体的可维护性,下面是必须要注意的一些关键点:

(1)性能:数据库必须具有足够能力进行数据管控;

(2)兼容性:数据库是否支持开发所需的其他环境;

(3)封闭性:数据库对于数据的存储与处理是否足够保密;

(4)可靠性:数据库能不能承担对于数据的管理与传递;

(5)并行性:数据库是否可以并行运行在多节点上;

(6)可操作性:数据库是否在使用前需要大量时间学习。

根据该即时通讯系统开发时的各类现状需求,我们最终选择了MySQL作为信息处理的载体。

4.2.1 概念结构设计

我们将系统中用到的各类数据抽象成各种数据体系,这些数据类型所组建成的体系正是概念结构的构建过程,进而组建全局的概念结构。

4.2.2 逻辑结构设计

逻辑结构设计则是把上一步设计好的E-R图结构转换为系统中相应的各类数据对应的逻辑结构。而E-R图向关系结构的过度,正是将各类实体与实体的对应关系进一步具体化,这是必要的,也是一个难点所在。

实体之间的关系是需要分为下述几种角度分析的:

如果博网即时通讯系统中实体间联系是1:1,则关系模式是自由的,可以与其他任何的关系模式结合。

如果博网即时通讯系统中实体间联系是1:n,则应将单独那一端的关系码列入其他端构建的各类结构中。

要是博网即时通讯系统中实体间联系是n:m,则应将各端与各端的实体对应关系表清,实体的码与联系的属性正是关系的属性。

基于上述原则,进而完成模型的转换。

4.2.3 物理结构设计

下述其遵守规则:

(1)避免各类数据的交叉而导致内存的浪费,最好建立数据字典。

(2)开发与设定相匹配,避免导致混乱。

(3)数据之间的关系必须是合理的,是可以在后续功能的拓展后不会产生影响的。

基于以上的考量,对本软件的信息结构如下:

表1  基本信息表

    5 系统实现

本系统运用socket开发技术作为构建信息传递的通道,MySQL作为数据库。只需在eclipse或者myeclipse环境中开发程序即可。

博网即时通讯系统在设计过程中数据的复杂程度并不高,所以MySQL已经可以满足需求,所以我们使用该软件作为数据的承载体。

5.1  系统运行环境和开发平台

 表4 系统运行环境和开发平台需求表

软硬配置

具体描述

   显示器

    亮度值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是控制端操作页面,通过运行相应的文件,即可打开该服务器端界面,在这个界面可以对已经注册过的用户进行管理与监控,也可以对服务器进行的基本管控,在对话框中查看一些基本日志。

图9  控制端操作页面

    图10是打开运行后的服务器页面,能够看到可以对用户进行管理,并在对话框中会产生一些辅助日志。

图10  服务器端上线页面

5.2.2  用户端操作页面

用户申请账号如图11所示,是用户端进行账号申请的页面,用户需要在该界面进行相关信息的完善,然后即可注册成功。 

图11  用户申请页面

图12是申请成功界面,申请成功后可以获得登录号码。

图12  用户申请成功界面

用户登录如图13所示,可以看到在该对话框中输入一些必要的信息即可完成登录,进入下一个界面。

图13  用户登录界面

图14是登陆后的用户界面,能看到没有任何好友,所以需要自己进行添加。

图14  用户登录成功界面

    添加好友如图15所示,这是用户将陌生人加入列表中进行交互,搜索相应用户账号,则可以搜索到该账号的持有者,然后加入列表。

图15  用户搜索账号页面

    图16是用户进行已搜索到账号并进行添加的界面,当对应用户信息显示出来时,可以先查看该用户信息再选择是否添加该账户。

图16  用户账号添加页面

    用户与其他用户进行交互方式如图17所示,是各位用户正在进行交互选择的页面,分为:信息传递,好友操作等等功能。

    图17  用户好友交互界面

    

6 系统测试

软件测试的意义在于,首先保障软件的质量,其次是对功能是否达到自己预期的一种测验,然后再对是否会存在与预期不同的结果。

软件的测试不仅仅在开发结束的时候需要进行一系列的测试,在开发的过程中也要不断的进行单元测试,来保证细节的完备,对问题的寻找也进行了简化。软件的质量由几个方面来决定:首先,是否在功能上达到了预期的要求。其次,是否对用户友好,对维护人员友好,这对软件的后期起到了很大的作用。最后考虑的是效率,冗余度,耦合度是否尽力减少,程序的依赖性会不会对后期维护造成困难。

6.1  测试内容

1.文档资料的核查:博网即时通讯系统需遵循相关规则进行严密的核查;

2.余量要求:博网即时通讯系统测试的信息量,该方面不能低于使软件能够正常持续运行的基本指标;

3.功能测试:博网即时通讯系统前端与后端的测试必须进行各个功能的全面测试,不能出现疏漏;

4.性能测试:博网即时通讯系统在该方面的测试必须从满足用户需求这个基本点开始,对于系统的稳定性,各类突发情况的处理等等性能进行多方面充足检测;

5.强化测试:博网即时通讯系统的正常使用必须考虑到大量用户而产生的压力,所以对该方面同样必须进行足够的预期计算; 

6.2  测试预期结果

在即时通讯系统中,初步预估目标应是:

控制端:

控制端能够打开并成功对其他用户进行监控。

控制端能够在页面上对在线的账户进行管理。

用户端:

用户可以申请账号并进入用户端界面。

用户可以改动其基本信息。

用户可以将已申请账号的用户加入自己的列表中

用户可以与列表中的其他账号进行交互。

用户有权限重复阅览过往的信息传递记录。

用户可以将其他用户移出自己对话列表。

6.3  测试用例

软件测试是一项极其重要且不可缺少的工作,在某些看上去不起眼的细节上通常会发生严重的软件故障。所以我们决定使用黑盒测试对其进行检测,黑盒测试的原理是将系统当成一个黑盒,不去重点关注内部的构造,用结果来证明功能是否完备。这种测试方式简单高效,但是对用例的丰富程度要求高,只要全面的多角度的用例才能更好地得到结果。根据测试用例测试结果如下:

  1. 服务器启动

       

在图26中能够观察到,当在使用的客户数偏小是,软件的应答效率很高,其延迟很低,但客户量的逐渐上升时,响应时间并没有出现很高的提升,所以在性能方面,该系统已满足用户使用需求。

在根据得到以上各类信息后,本软件测试阶段的工作顺利完成,系统已经基本可以实现预期的效果。

7. 

经过半个学期的不懈努力,终于完成了博网即时通讯系统的设计与实现。“实践出真知”这句话真是一点没错,从开始的模模糊糊到开发目标越来越明确,伴随着各个功能的逐一完成,再到最终完成该系统。回想起这整个过程的感受,我不得有诸多感想,随着软件的设计与开发的深入,感觉对于以往所学的知识又有了新的体会。

目前博网即时通讯系统的实现,为了资源的节约,是模仿过其他聊天软件的,在本系统中主要组成部分包含:账号的申请与通过账号进入聊天界面,陌生人到好友的添加,已加好友的删除,好友与好友,与陌生人的信息传递,这些简单易用的小功能确给用户带来了极大的便利,和优秀的用户体验,从而造就一个实用的软件。

该即时通讯系统可以在很大程度上确保信息的快速性与准确性,而且各种来往的信息传递,都将被存入相关的文件中,以便对其进行相应的管理与维护,在信息发生疏漏与不可避免的一些错误是,进行后期的维护与纠正是极为便利的,是很任性化,所以系统的整体体验是比较优秀的。

软件已经完成即时聊天系统的基本功能,但是却不是很完善,界面在制作过程中花费不少精力,但仍旧不是很美观,所以在后续仍可以对其进行大量的优化,使其趋于完善,在开发本软件时,发现很多的知识已经比较模糊,所以在这个过程中又将以往所学重温一遍,深感收货颇丰。在开发过程中发现自己并不能很好将以往所学的各种知识融入到其中,所以在后续的学习过程中,还必须多多实践。


http://www.kler.cn/a/450421.html

相关文章:

  • java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
  • SWIFT基本使用
  • AOP 面向切面编程的实现原理
  • [Xshell] Xshell的下载安装使用、连接linux、 上传文件到linux系统-详解(附下载链接)
  • 多功能护照阅读器港澳通行证阅读机RS232串口主动输出协议,支持和单片机/Linux对接使用
  • [计算机网络]唐僧的”通关文牒“NAT地址转换
  • 停车管理系统:构建安全、便捷的停车环境
  • 人工智能的未来:重塑世界的技术革命之旅
  • 2024年12月24日Github流行趋势
  • MySQL字符串截取函数
  • 计算机网络•自顶向下方法:计算机网络和因特网
  • 【RabbitMQ】【Laravel】【PHP】Laravel 中使用 RabbitMQ
  • 理解神经网络
  • nestjs:GET REQUEST 缓存问题
  • 频繁拿下定点,华玉高性能中间件迈入商业化新阶段
  • Vue.js前端框架教程12:Vue表单验证rules和form.validate
  • 02、Spring AOP
  • 学习ASP.NET Core的身份认证(基于JwtBearer的身份认证1)
  • 【论文阅读】Unlearning Backdoor Attacks in Federated Learning
  • TowardsDataScience 博客中文翻译 2018~2024(一百二十三)
  • Java 深拷贝全面解析
  • Ansible---playbook剧本
  • 案例分析-THC7984设计问题报告
  • 【超详细实操内容】django的身份验证系统之限制用户访问的三种方式
  • Flutter动画学习二
  • 18. 分积木