《基于CS结构的即时通信系统的设计与实现毕业设计.pdf》由会员分享,可在线阅读,更多相关《基于CS结构的即时通信系统的设计与实现毕业设计.pdf(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-沈阳理工大学毕业设计(论文)成绩评定学生姓名:专业:通信工程学号:题目:基于 C结构的即时通信系统的设计与实现毕业设计(论文)答辩委员会(小组)评语:答辩评分:答辩委员会主任(组长)(签字):年月日毕业设计(论文)成绩-指导教师评分(%)审阅评分(%)答辩评分()毕业设计(论文)成绩:(分)毕业设计(论文)总评成绩(等级):答辩委员会主任(签字):年月日毕业设计(论文)评语指导教师评语:-评阅人评语:毕业设计(论文)任务书学学院院学学 生生 姓姓 名名设计设计(论文)题目论文)题目信息科学与工程学院专专业业学学号号通信工程基于 C/S 结构的即时通信系统的设计与实现-内容及要求内容及要求:1
2、.基于 C/结构即时通信系统发展现状及技术背景;2 基于 C/S 结构即时通信系统的设计;3。编程实现基于 C/S 结构即时通信系统;4.基于 C/S 结构即时通信系统测试分析;5 依据研究的内容撰写毕业设计论文.进度安排进度安排:第 13 周:搜集课题相关资料,熟悉开发工具,撰写开题报告;第 4周:基于 C/S 结构即时通信系统架构及功能设计;第 7周:基于 C/S 结构即时通信系统详细设计;第 102 周:编程实现基于 C/S 结构即时通信系统;第 13 周:程序调试;第 116 周:撰写、修改、装订论文,准备答辩.指导教师指导教师(签字签字):):学院院长学院院长(签字签字):年年月月日
3、日年年月月日日学生毕业设计档案学生毕业设计档案-学学 生生 姓姓 名名指导教师姓名指导教师姓名毕业设计题目毕业设计题目学学院院信息科学与工程学院学学号号职职副教授所在单位所在单位沈阳理工大学称称基于 C/S 结构的即时通信系统的设计与实现毕业设计毕业设计(论文)完成情况论文)完成情况毕业设计各阶段名称毕业设计各阶段名称1.搜集课题相关资料,熟悉开发工具,撰写开题报告;2.基于 C/结构即时通信系统架构及功能设计;3.基于 C/S 结构即时通信系统详细设计;4.编程实现基于 C/S 结构即时通信系统;5.程序调试;起止日期起止日期01。220532225.323-015。4.12015。13-2
4、015。26完成情况完成情况(存在问存在问题及整改意见题及整改意见)阶段成绩阶段成绩撰写、修改、装订论文,准备20.4.2720指导指导(根据学生出勤及毕业设计(论文)完成情况,指导教师是否同意该学生参加答辩(根据学生出勤及毕业设计(论文)完成情况,指导教师是否同意该学生参加答辩)教师教师注注:阶段成绩分、阶段成绩分、C C 三级:三级:为全面完成任务、为全面完成任务、B B 为完成任务、为完成任务、C C 为完成为完成摘 要-随着互联网的发展,越来越多的人使用即时通讯工具。即时通讯(M)是指一种能够让使用者即时发送和接收互联网消息等的实时通讯服务。即时通讯的最大特点在于它的即时性,不用等候,
5、只要两个人都同时在线,就能像多媒体电话一样,传送文字、档案、声音、影像给对方。只要有网络,无论对方在天涯海角,或是双方隔得多远都没有距离。因此即时通信系统在现代社会中有着非常重要的地位。本论文详细的论述了即时通讯系统的客户端和服务器端的主要组成模块,论述各模块实现方式和详细的设计,每个模块的主要功能进行了阐述,并画出模块流程图。系统按照软件工程思想釆用面向对象和模块化设计方法设计,其中采用了网络通信技术、数据库技术、多线程技术等计算机技术,实现了文本通信、用户分组、用户管理等功能,具有通信即时性等特点。系统基于 CS 体系结构,使用ava 语言进行开发,实现多用户的即时通信。设计并实现了用户注
6、册,登录,用户列表,多用户即时聊天和聊天记录管理等功能。基于 Sng 开发图形用户界面(GI);通过套接字编程完成通信功能。最终实现了一款面向企业用户的在局域网使用的即时通讯系统。本系统基本实现了上述的研究,能够满足基本的通信需求。同时由于本系统采用模块化程序设计,具有良好可扩充性。关键词:Swing 编程;CS;多线程编程;即时通信系统-AbstactWth the deeopent o te nernet,or andoreolreusignstnt mesagi toos。IM(M)saway t alw userst end and receive insantmesages ad o
7、ther tnet realtme communito evies.The most mornt fatur f insanmsaigis ts realime。s o s tw epleare onlineathe same tme,u twoo notha tait adcansedext,fil,udi,videoto ech othrikmtiediphone。Asog s thrisa network,heresnodsnc,regardleso ow eteeneahothr.There,h reatecommunicainystmshave layed a e important
8、roein oernsciety。hs say analyze he min muestheintant messagin sm clint andrvr in dta,discuse hilmetatio ofeah mdue and dtal dsin f ain funcionsof c modl a drew he low agam Thi sstm waseignebybect-orientedand modlar metod,hic sdnerk communictnechnolgy,dataas ehnlogy anmulti-threaditehnology and s o。T
9、his ytemimpleee nctionotetext commniation,uer groups,andsermaageent,d had ratimeature.Ths software based on C/usigJavaprogamlanguage,reied mltss5 insant eagg。I have deined ndarrid utign-up,ign-in,srli,mltus stntmessging,recors maageent ndso。eel-pedgapical ue interfae(GUI)uing g。leetedcomuicatonsing
10、ke prgrammingFinaly,An intantmessgn s m wimplemented wic s rined thebusiness errissing on LA.heSyt eflect th abvres rslts,nd can met h communiatio needsd eausof modulr pogrmig,thsyt has well ibity。KeywordsKeywords:wgProaming;itatessging;utihrea Proramin;Clnt/Serv model目 录1绪 论11即时通倍系统概述和选题背景.11。选题的目的
11、和研究意义错误错误!未定义书签。未定义书签。1。3本论文的研究方法314本论文的内容32主要技术介绍错误错误!未定义书签。未定义书签。2。1开发环境介绍.52。.1Jav语言的产生与发展简介.5。1。2Java 语言的主要特点.错误错误!未定义书签。未定义书签。-2.1.3Jwb 和 srut2 技术.6.1。4yEcIi72。2Swin编程72.3多线程编程724MSQL 数据库简介.82.5即时通讯系统原理.82。5套接字通信9。.2数据报通信9。6系统的主要架构92.7TCPI 协议.10即时通信系统分析.123。系统基本功能描述错误错误!未定义书签。未定义书签。3.可行性分析.123.
12、3系统需求分析14即时通信系统设计.4数据库设计.142系统模块设计.15.2。聊天系统工作原理图.4。2.2系统功能模块图:12.3系统用例图74.4活动图.13系统类设计.14.3.1sse 类的设计:1943。2截图类的设计:14.3聊天记录类的设计:.21。.4服务端线程的设计:225即时通信系统实现.23-5。1实现概况235.注册模块2352.1流程图25.。关键代码.245.3登录模块255。3。1流程图.53.2关键代码.654聊天模块.305。4.流程图.354。关键代码3155文件模块355。5。1流程图.35.2关键代码366用户管理模块.415.1流程图.415.62关
13、键代码425.7其他功能的实现.45.7.1截图功能的实现455.72聊天记录功能的实现46.7.3服务端线程的实现.48用户界面的设计.485。登陆界面.485。8。2好友列表4958。聊天界面0结 论5致 谢.错误错误!未定义书签。未定义书签。参考文献53-附录 A英文原文5附录 B汉语翻译62-1绪 论11即时通倍系统概述和选题背景即时通信(Instant Mesagn,缩写为 IM),是以万维网为基础,实现通信双方语言、文件、语音等实时信息传送的通信过程1。与 Emil 等传统的通信方式相比,即时通信具有实时、方便、快捷、廉价、交互性好等优点。当今社会是一个信息化的社会,个人化的交流要
14、求越来越高。同时,随着多媒体计算机技术和通信技术的迅猛发展,人们已经不能满足于简单的话音和文字通信,希望集语音、文字和图像于一体的多媒体通信24.即时通信技术自从996 年诞生以来,经历了 0 余年的发展,已经从最初的简单的文字聊天通信工具,发展成为一个集通信和娱乐统一于一体的广泛平台。在这个平台上,除了可以进行最基本的实时通信(包括文字通信,还有视频通信和语音通信)之外,还可以进行游戏的娱乐项目,甚至可以进入一个虚拟的世界、一个虚拟的现实。现在著名的即时通信软件有Q,Goog Talk,ah Messager,微信,飞信,ne,Skype 等,这些即时通信系统在提供即时通信基本功能的基础上,
15、各自有自己的特点.如飞信可以免费发送短信到好友的手机;Gogle talk 的聊天记录是以邮件的形式保存在oogl mail 的邮箱里面5。而且除了实现 PC 与 PC、手机与手机的通讯之外,还可以实现手机与 PC 之间的通信。但是这些优秀的即时通讯软件的使用必须有一个前提条件:必须保证因特网的畅通。如果因特网不畅通,那么这些软件都不能正常的使用,而且很多的即时通讯软件只能在 Wnds 平台下运行,不能在 Linux、ac O上跨平台运行,除了个别的几个工具之外,也不能再移动平台上运行。随着时代的发展,互联网时代的到来,人们的沟通交流方式也变得越来越丰富,如mail、BBS、即时通讯软件、微博
16、、移动终端等.但是就在个人通信方式方兴未艾的时候,企事业内部交流通信却显得比较的尴尬,很多的企事业单位内部之间的工作沟通使用的市场上现有的个人即时通讯工具,部门同事之间相互加为好友,部门与部门之间建立一个又一个的群,这种方式貌似很方便同事之间的工作沟通.本人的 QQ 就加-入了十几个群,个人的各种好友有近百人,我的同学中有的加入几十个群,各种好友有数百人之多。每天一打开通信软件,就会弹出各个群的信息,很多好友的信息,每天的交流沟通占去了很多很多的时间,工作效率低下。发出一款能在企事业单位内部使用的、进行工作沟通交流的即时通讯软件,使得我们能在上班的时候免受工作之外的各种信息的干扰,提高我们的沟
17、通质量,提升人们的沟通体验,就显得非常必要.而且人们也越来越关注一个问题,那就是安全保密。如何能在因特网不畅通的时候进行实时通信,如何保证个人信息的安全性,如何保证企业单位内部信息安全性,如何使得软件能够跨平台(不仅是平台之间,也包括C 和移动终端之间)使用,正是本论文的研究所在。1.2选题的目的和研究意义现代社会的信息越来越发达,生活节奏也越来越快,于是新型的省时,省力而又高速便捷美观的即时通讯工具迅速发展起来。例如手机即时通讯和C 即时通讯,手机即时通讯的代表就是短信;而网站、视频即时通讯有:米聊、Y语音、QQ、MN、百度i、新浪 UC、阿里旺旺、网易泡泡、网易 CC、盛大 ET、移动飞信
18、、企业飞信等应用形式。尽管有这么多的通讯形式,但并不是都很完美,每种形式各有优劣。所以期待能用 Jav语言编程改善和解决一些问题,进一步提升即时通讯的功用。在信息化时代,作为人们使用最多的,与日常生活最为密切的即时通讯工具,就成了人与人之间进行信息交流,感情传递的主要方式.然而,以传统的 QQ 为代表的即时通讯工具过多的侧重于娱乐性,不能够适用于高效严谨的办公环境,它不仅影响员工的工作效率,而且使得企业的内部的资源信息存在着较大的安全隐患。因此,开发出一款能够适应办公环境,企业急需,方便高效的,又安全可靠的即时通讯工具就显得比较的紧迫,比较具有现实意义。通过研究开发出一款适合于企事业单位使用的
19、即时通讯软件.本系统具有如下的特点:(1)由于减少了工作之外的因素的干扰,工作效率大大的提高,沟通体验得到了提升.(2)能够很快捷方便的获知对方是否在线。-(3)由于交流通信使用的内部的即时通讯软件,所以能够很好的保护信息的安全。(4)系统应用之后,使得沟通的渠道通畅,交流实现扁平化,避免了过去传达汇报的传统交流沟通方式,使得沟通交流更加的有效。()由于采用 C/架构,所有的信息都是通过服务器转发,很方便的查询历史记录。本系统釆用模块化程序设计,系统具有良好可扩充性,可以在后续的开发中添加移动通信模块、电子邮件模块和视频通信模块,为系统的继续完善奠定了良好的基础。.3本论文的研究方法本文的设计
20、目标是一个实用的面向企业的局域网即时通讯软件.首先对系统的可行性进行分析,确定了系统开发可行。然后经过需求分析确定了系统最终要实现的功能,确定了本系统所使用的后台数据库系统为 MyS,并对系统中的数据库进行了设计。系统釆用目前最为流行的开发工具aa 语言进行开发。其中,网络通信部分采用流行的 TCPI协议,程序采用典型的 CS(客户端/服务器)模式,这是传统的软件系统体系结构,能够将任务合理的分配的 Client 端(即客户端)和erver 端(即服务器端),可以大大的降低系统的通讯开销,可以充分的利用/S 两端的硬件环境的优势。程序采用的是使用 Soet 套接字进行网络通讯模块设计,界面部分
21、采用in轻量级控件,能够是系统的控件在各个平台上具有完全相同的界面,达到了很好的互通性。系统釆用模块化设计,釆用自顶向下的开发模式。开发过程中先根据功能将系统划分成不同的模块,然后将各个模块继续细化,划分成更小的子模块。模块化的好处是便于开发,便于调试,便于系统的后期维护,并为后续的开发预留接口,使得系统具有良好的可扩充性.本文最终设计出一个简易而实用的网络即时通讯软件,模式又分为服务器和客户端两部分:客户端通过输入服务器端的 IP 地址与服务器建立通信。考虑到要可以在局域网中应用,本系统使用的是第二种方法,经过设置,在局域网或ntn上都可以使用。-1。4本论文的内容第一章绪论。系统的介绍了课
22、题的选题背景,课题研究的意义,所釆用的研究方法以及本论文的结构。第二章主要内容介绍。详细的介绍了本系统所涉及到的即时通信的原理。包括即时通信系统的定义CP/I协议。介绍了本系统所涉及的 JAVA 编程技术。包括套接字编程,多线程编程技术,Swng 轻量级图形用户界面开发,系统开发的 C/S 架构等。介绍了数据库操作的 MySQL 语言。第三章系统分析。首先从技术可行性、经济可行性和操作可行性方面讨论了系统的可行性。然后通过需求分析确定了系统所要实现的基本功能。第四章系统设计。确定了系统的总体框架,服务器端和客户端的详细功能和界面,并且确定了系统的数据库。第五章系统实现.重点介绍了系统的服务器端
23、和客户端的实现。最后是结语和致谢。对整个发过程做出了全面的回顾,并系统的进一步改进和完善提出自己的意见。-2主要技术介绍2.开发环境介绍2。1。1Jva 语言的产生与发展简介Jav 是es Gosng 领导的 Gree-小组在Sunicrosystems-公司开发的,199年更名为 Jaa,并重新设计,用于开发ntne应用程序。近年来,Java 变得非常流行,显示出独特的魅力:跨平台、动态的 Web、Itene计算。ava 被广泛接受并推动了 Web的迅速发展,同时 Jaa 技术也不断更新。Java 是一个由 Ja虚拟机(JaVitual acie)和 Java 应用编程接口(Aplitin
24、rogrming Interfae简称 AI)构成的完整平台,有一个庞大的类库,其中包含很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾回收等服务的执行环境。a的内容体系主要有:a 应用程序、plet小应用程序、JPServlet、Jav Bean、B、avaME、JavaEE 等.迄今为止,av语言已作为一门综合性技术在众多领域得到发展和应用。2。2Java 语言的主要特点Jv是面向对象的、简单的、分布式的、解释型的、健壮的、安全的、结构中立的、可移植的、高性能的、多线程的和动态的7.(1)Jav语言是面向对象的程序设计语言.J是一个纯粹面向对象的语言,强调的面向对象的
25、特性,具备继承、封装及多态性,对软件工程技术能够提供很强的支持8。为了简单起见,Ja语言只支持类之间的单继承,但支持接口之间的多继承。另外 Jva 全面支持动态绑定。(2)Ja语言是简单的.Jva 在设计的时候尽可能地接近 C/C+,但是剔除了+中很少使用的、难以理解的、易混淆的特性,如操作符重载、多继承、自动的强制类型转换。特别地,Jav语言不使用指针,并提供了自动垃圾回收机制.总之,Ja 语法好比 C+语法的一个“纯净”版本。Ja 简单性的另一方面是小。(3)Java 语言是分布式的。从诞生起,Java 就与网络联系在一起,它强调网络特性,内置 TCP/I、HTP、FP 协议类库,Jaa
26、应用程序能过通过 UR打开和访问网络上的对象,其便利程度如同访问本地文件系统一样。另外,Java 的M(远程方法激活)机制也是开发分布式应用的重要手段。(4)aa 语言是解释型的。Java 程序在 Jaa 平台上被编译为字节码格式,然后可以在实现这个 Jaa 平台的任何系统中运行.在运行时,Jav平台中的 Jaa-解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。(5)Jav语言是健壮的。Jva 通过强类型机制、异常处理、垃圾的自动收集等机制来保证av程序的健壮性.Java 与 C+最大的不同在于 Java 采用的指针模型可以消除重写内存和损坏数据的可能性。Ja
27、的安全检查机制使得 Java 更具健壮性。()Jav语言是安全的。Jva 程序在语言定义阶段、字节码检查阶段及程序执行阶段进行的三级代码安全检查机制,对参数类型匹配、对象访问权限、内存回收、Java 小应用程序的正确使用等都进行了严格的检查和控制,可以有效地防止非法代码的入侵,阻止对内存的越权访问,能够避免病毒的侵害。(7)Java 语言是体系结构中立的。Java 程序(后缀为 java 的文件)在 Jaa 平台上被编译为体系结构中立的字节码格式(后缀为 cs的文件),只要有 Jav运行时系统,这种字节码不仅可以很容易地在任何机器上被解释执行,而且还可以迅速地翻译成本地机器的代码。(8)Jaa
28、 语言是可移植的。与/+不同,ava 规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关算法都做了明确的说明。Jv系统本身也具有很强的可移植性,J编译器是用 Java 实现的,Jaa 的运行环境是用 ANI 实现的。(9)ava 是高性能的。Ja采用 JIT 编译器(即时编译器),而即时编译器的基本工作方式是一次把字节码编译为本地代码,并将结果缓存起来,在需要的时候重新调用,由于这种方式只需要进行一次解释,从而极大地提高了常用代码的运行速度。(10)Jv语言是多线程的。只要操作系统支持,a 中的线程就可以利用多个处理器.在不同的机器上,只是调用多线程的代码完全相同,v把多线程的实现交
29、给了底层的操作系统或线程库来完成。()va 语言是动态的。Java 执行代码是在运行时动态载入的。在网络环境下,Java 语言编写的代码用于客户端架构可减少维护工作.另外,类库中增加的新方法和其他实例不会影响到原有程序的运行。-2.13Jav web 和 strts2 技术采用/S 的结构实现服务器端,对用户和在线用户进行增删改查,和踢用户下线,以及开启服务器和关闭服务器。客户端采用 C/S 结构,管理端采用 B/的结构,用 Tocat 作为服务器,MySQL 作为数据库,还使用到了idowBuildr 开源框架进行界面开发.2.1。4MEcipeMyEe 企业级工作平台(MycIipe En
30、errse Workbenh,简称 MyEcIs)是对clips ID的扩展,集成了从 J2EE 到各种轻量级的框架(truts,Sprig,emat等等),有利于程序的一体化开发。简单而言,MyEcpse 是 Ecipe 的插件,也是一款功能强大的 J2EE 集成开发环境,支持代码编写、配置、测试以及除错,完整支持TML,tmts,JSF,CS,Jvscr,MySQL,ibernat.2。2Swing 编程aax.swng 包在图形界面设计上比 AWT更丰富,更美观。Swi拥有 4 倍于 AW的用户界面组件,他是在WT 包的基础上的扩展.本系统中大量使用了 Swig 组件编程。本系统用到的S
31、wn组件有面板(Panel)、滚动窗口(JscollPae)、选项板(JaePane)、按钮(JButon)、组合框(Comboox)、标签(Labe)、表格(JTale)、文本域(TextFild)、文本区域(JextArea)。其中文本域(JTxtFeld)是用来输入或显示字符串的 Swing 组件1,文本区域(TxtAea)可以让用户输入多行文本的 Sing 组件12。2。3多线程编程多任务处理有两种截然不同的类型:基于进程的和基于线程的。进程是程序的一次动态执行,对应了从代码加载、执行至执行完毕的一个完整过程。一个进程中既包括所要执行的指令,也包括执行指令所需的任何系统资源,如 CPU
32、、内存空间、I/O 端口等,不同进程所占用的系统资源相对独立。因此,基于进程的多任务处理的特点是-允许你的计算机同时运行两个或更多的程序。线程是进程执行过程中产生的多条执行线索,是比进程更小的执行单位,必须栖身于某一进程之中,有进程触发执行。基于进程的多任务处理的特点是一个程序可以同时执行两个或多个任务的功能。多线程程序比多进程程序需要更少的系统开销。在创建或撤销进程时,系统都要为之创建和回收进程控制块,分配或回收资源,如内存空间和O 设备,系统所付出的开销明显大于创建或撤销时的开销.在进程切换时,涉及到当前进程PU 环境的保存及新被调度运行进程的 CPU 环境的设置,而线程的切换则仅需保存和
33、设置少量寄存器内容,不涉及存储管理方面的操作。因此线程间的切换也是低开销的。Jaa 支持内置多线程编程.在本系统中,设置后台线程处理服务器和客户程序的通信.服务器资源以轻量级的线程提供,和多个客户线程并发连接通信.这样可以减轻服务器端的开销,同时保证了多个用户端连接能够得到快速而高效的服务9。2。4MSL 数据库简介MSQ是一个开放源码的小型关联式数据库管理系统,开发者为瑞典 MSLA公司。目前ySQL 被广泛地应用在 Intne上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了ySQL 作为网站数据库。与其他的大型数
34、据库例如 Ole、SQLServer 等相比,MySQL 自有它的不足之处,如规模小、功能有限(MyLCluster 的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,QL 提供的功能已经绰绰有余,MySQL 是最佳的选择,而且由于 MyQL 是开放源代码的软件,因此,可以大大降低总体的拥有成本。目前,在 Iternt 上所流行的主要网站的构架方式是 AP(iuApch+MySQL+PHP/PerlPton)和LNMP(Lnx+Nix+MySL+hp/pelPton),即使用inux 作为操作系统,Apache 和 Ngnx 作为 Web
35、服务器,MyQL 作为数据库,PHrlythn 作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。-2。5即时通讯系统原理Jva 支持流套接字和数据报套接字。流套接字(strem set)使用传输控制协议(TCP)进行数据传输,而数据报套接字使用用户数据报协议(UDP)10。5.1套接字通信网络程序设计通常涉及一个服务器和一个或多个客户端。客户端向服务器发送请求,服务器响应请求.客户端从尝试建立与服务器连接开始,服务器可能接受或拒绝连接。一旦建立连接,客户端和服务器端就可以通过套接字进行通
36、信。套接字(Soket)是两个主机之间逻辑连接的端点,用来实现客户方和服务方的连接。Java 对套接字通信的处理非常类似于对输入输出操作的处理,因此,程序对套接字读写就像对文件中读写数据一样容易。套接字分为服务器端套接字、客户端套接字.首先创建一个服务器,这需要创建一个服务器套接字 server soct,在创建服务器套接字之后,服务器使用下列语句监听连接:Sk socke=ereSocket。acep();客户端执行下列语句请求与服务器进行连接:Socketsocke=n Sockt(severa,r);当服务器和客户端建立连接后就可以进行通信了。由于本系统存在单个服务程序与多个客户程序通信
37、的可能,所以服务程序要响应客户程序不应该花很多时间,否则客户程序在得到服务前有可能花很多时间来等待通信的建立,然而服务器程序和客户程序的会话可能很长,因此,为加快对客户程序连接请求的响应,比较好的解决方法是服务器主机运行一个后台线程,这个后台线程处理服务器和客户端程序的通信。而客户端只要能够顺序处理服务器程序的响应就可以了,因此客户端程序通常不使用多线程.2.数据报通信数据报是一种无连接的通信方式,它的速度比较快,但是由于不建立连接,不能保-证所有数据都能到达目的地。所有一般用于传送非关键性的数据。发送和接收数据报需要使用ava 类库中的 Daaramacket 类和aagraSockt 类。
38、2.6系统的主要架构基于/S 的体系架构:C/S 架构,即lient/Serv(客户机/服务器)结构,是传统的软件系统体系结构,通过将任务合理分配到 Cen端和 Srer 端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。客户端用于用户的注册、登录、通讯,而服务器端用来接收用户注册信息、验证登录信息以及转发用户之间相互通讯的信息。B/结构(Browser/Sev结构)结构即浏览器和服务器结构。它是随着ntenet 技术的兴起,对 CS 结构的一种变化或者改进的结构.在这种结构下,用户工作界面是通过 WW浏览器来实现,极少部分事务逻辑在前端(Broser)实现,但是主要事务逻辑在服务器端
39、(Server)实现,形成所谓三层 3ter 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立 BS 结构的网络应用,并通过 Iternet/ntrae模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LN,WN,Intene/Intnet 等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在 JV这样的跨平台语言出现之后,/S 架构管理软件更是方便、速度快、效果优。2.7TC/I 协议TCPI
40、P(TransmisionContrl rotoco/Iternet Potool,传输控制协议网际协议),是 Inernet 最基本的协议、nternet 国际互联网的基础,主要的组成部分是网络层的 IP 协议族和传输层的 TCP 协议族。TC/IP 协议定义了电子设备如何连入-因特网,以及数据如何在它们之间传输的标准。协议采用了 4 层的层级结构:网络接口层、网络层、传输层、应用层。应用层应用进程应用进程应用进程应用进程传输层网络层TCPUDPICMPIPIGMPARPRARP-网络接口层网络接口图 2-TP/IP 协议体系结构网络接口层:提供了 TCP/I与各种物理网络(局域网、广域网等
41、)的接口,并为网络层提供服务。网络层:主要功能是管理 Inte地址、路由选择、数据的分片和重组。这一层解决了计算机之间的通信问题,该层的协议统称为 IP 协议。传输层:主要功能是为 Intenet 提供可靠地传输控制,主要的协议包括 T协议和D协议。应用层:提供各种应用服务,例如 HP、STP、TP 等协议。每一层都呼叫它的下一层所提供的协议来完成自己的需求.通俗而言:P 协议是给因特网上的每一台电脑提供一个P 地址,保证网络是畅通的,但是不能保证发送的数据都能到达指定的目标 IP,即不能保证数据传输的可靠性 15。而TC协议则解决了数据传输可靠性的问题.它负责发现传输的问题,一旦发现传输过程
42、中有数据包丢失就会发出信号,自动要求将丢失的数据重新传输,直到所有数据安全正确地传输到目的地,并且能够调整接收到的数据包,恢复数据到原来分片之前的顺序。3即时通信系统分析3.1系统基本功能描述客户端可以实现注册,即时聊天,相互之间收发文件,发送截图,查看历史聊天记录等功能.收发消息时,可以实现离线接收。服务器端应当建立一个 Serrocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。服务器端应当是一个信息发送中心,所-有客户端的信息都传到服务器端,由服务器端根据要求分发信息。在后台管理系统,可以到对用户进行增删改查,查看在线用户,和踢用户下线.3。2可行性分
43、析本系统的可行性分析包括以下几个方面的内容:(1)技术可行性使用 Swn 和 socket 技术,可以很轻松地开发出实用、简便、高效的基于网络的即时通讯系统.因此技术上是可以实现的。(2)经济可行性计算机网络已经普及,因此在网络设备上不需要进行大的投入。本系统需要一个ySQL 数据库服务器,由于并发使用人数比较少,tot 可以作为 web 服务器,所以成本很低。(3)操作可行性只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全不存在问题。如果要实现 intret 上通讯,只需要将服务器端运行在一个有固定 IP 的公网上就可以。综上所述,即时 Jav即时通讯系统是可行的
44、。33系统需求分析功能分析:本系统要实现的功能如下:()注册服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,-籍贯,个人资料等,接受完毕后,便通过 JDC 与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。客户收到服务器返回的信息后,便打开窗口登录.(2)登录在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过DC 读取数据库,然后与用户输入的信息进行比对,如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,从数据库中取出好友列表,然后向客户端发送这些信息,客户收到后就在主窗
45、口显示好友。(3)聊天客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发.例如服务器接收到一个 A 发给的消息,先判断 B 是否已经在线,如果在线就将信息发送过去。如果B 不在线则把信息储存在服务器,等上线了在发送给他。B 接收到 A发来的信息,如果是未建立对话窗口,则自动打开显示。(4)发送截图客户端 A 点击截图按钮,将屏幕锁定,截取图片,将图片储存在 bte数组中发送到服务器端。服务器端根据发送人信息和接收者信息来转发.B 接收到 A 发来的截图信息,会根据e构造图片,将图片显示出来。同样,如果是未建立对话窗口,则自动打开显示。()发送文件客户端点击发送文件按键,从本
46、地选择文件,将文件在 byte数组中分批次发送到服务器端。服务器端根据发送人信息和接收者信息来转发。接收到A 发来的文件信息,会根据文件发送的状态和 bte构造文件13-14。(6)日志客户端发送和接收到的信息都会储存在文本文档中。默认储存在 C 盘下面,会以-用户的登录账号为名。(7)对用户的操作管理员通过 B/S 的系统对用户进行增加,修改,删除,查找等操作,对系统进行维护。(8)在线用户的操作管理员通过 B/的系统对在线用户操作,可以踢用户下线。-4即时通信系统设计41数据库设计本系统中所涉及的主要实体及其属性有:用户(用户账号,用户名,密码,个性签名,头像 ID,年龄,性别).E-R
47、模型如图所示NamepasswordaccountUser-signature-sexProfileldage图 4-系统实体及其属性表 4-User字段名数据类型字段说明键引用备注accntint(6)IDPK主键(自动增一)namevahr(2用户名称非空)aswodvrchar(20)用户密码非空sinatueVarchar(255)签名profilIDt(2)头像 IDaint(3)年龄exs chr(2)性别4。2系统模块设计4。21聊天系统工作原理图服务器客户客户-客户-Socket(C)Sockr(TCP)Socke(TP)。图2 系统工作原理.2.2系统功能模块图:JAVA 聊
48、天系统注册登录模块文件模块聊天模块用户管理模块文件接收文件发送发送文字发查找用户在线用户管理删除用户增加用户修改用户送图片-图 4 系统模块查看在线用户踢用户下线.2。3系统用例图普通用户的用例图:登录文字注册用户use聊天图片ses发送文件uses文件se接收文件图 44 普通用户用例图-后台管理员的用例图:管理员查看在线用户查找用户登录增加用户修改用户删除用户踢用户下线图5 后台用户用例图4.24活动图()用户登陆活动图首先填写登录信息,提交以后服务器会对用户名和密码进行验证.如果不正确,返回一个提示信息。如果登陆成功,就更新在线状态.通知所有好友自己已经上线.服务器再检查是否有他的离线消
49、息,如果有这立即发送给用户。客户机服务器-填写登录信息身份不符登录请求(失败)创建拒绝登录登录请求校验身份返回在线好友更新在线状态登录请求(成功)向在线好友发布上创建登录成功消息创建离线消息好友离线消息消除离线消息记录-图 4 用户登录活动图(2)发送消息活动图短消息发送以后,服务器端对应的监听线程会接收到一个数据包。此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者17.如果不在线,存在服务器端,等它上线在发送。发送短信短信填写短信内容客户机客户机服务器对方已离线则发往服务器网络故障成功发送接收短信短信(发送失败)监听端口写入离线消息库监听端口-图-发送消息活动图4。系统类设计4
50、.3。1esge 类的设计:客户端和服务器端通信时,发送的都是 Mesa类的对象,因此 Messge类的设计很重要。表 42 Messae属性名作用privte Integemsgype;prite trnconten;privateItegr sndecont;priateIneger recivrAcont;rivae ring tim;信息类型信息的文本内容发送者 acunt接收者 account发送时间privt Usr mysf;priva ListU friends;riat trnientIme ig;privatebyte magete;自己本身对象,用与好友列表头好友列表图片