




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学毕业设计(论文)成绩评定学生姓名: 专业: 通信工程 学号: 题目: 基于C/S结构的即时通信系统的设计与实现 毕业设计(论文)答辩委员会(小组)评语:答辩评分: 答辩委员会主任(组长)(签字): 年 月 日毕业设计(论文)成绩指导教师评分( %)审阅评分( %)答辩评分( %)毕业设计(论文)成绩: (分)毕业设计(论文)总评成绩(等级): 答辩委员会主任(签字): 年 月 日毕业设计(论文)评语指导教师评语:指导教师评分: 指导教师(签字): 年 月 日指导教师评分: 指导教师(签字): 年 月 日 评阅人评语:评阅人评分: 评阅人(签字): 年 月 日评阅人评分: 评阅人(签字): 年 月 日毕业设计(论文)任务书学 院信息科学与工程学院专 业通信工程学 生 姓 名学 号设计(论文)题目基于C/S结构的即时通信系统的设计与实现内容及要求:1. 基于C/S结构即时通信系统发展现状及技术背景;2. 基于C/S结构即时通信系统的设计;3. 编程实现基于C/S结构即时通信系统;4. 基于C/S结构即时通信系统测试分析;5. 依据研究的内容撰写毕业设计论文。进度安排:第13周:搜集课题相关资料,熟悉开发工具,撰写开题报告;第46周:基于C/S结构即时通信系统架构及功能设计;第79周:基于C/S结构即时通信系统详细设计;第1012周:编程实现基于C/S结构即时通信系统;第13周:程序调试;第1416周:撰写、修改、装订论文,准备答辩。指导教师(签字): 年 月 日学院院长(签字):年 月 日学生毕业设计档案学 生 姓 名学 院信息科学与工程学院学 号指导教师姓名职 称副教授所在单位沈阳理工大学毕业设计题目基于C/S结构的即时通信系统的设计与实现毕业设计(论文)完成情况毕业设计各阶段名称起止日期完成情况(存在问题及整改意见)阶段成绩*1. 搜集课题相关资料,熟悉开发工具,撰写开题报告;2. 基于C/S结构即时通信系统架构及功能设计;3. 基于C/S结构即时通信系统详细设计;4. 编程实现基于C/S结构即时通信系统;5. 程序调试;撰写、修改、装订论文,准备答辩。2015.3.22015.3.222015.3.232015.4.122015.4.132015.4.262015.4.272015.5.242015.5.252015.6.72015.6.82015.6.21指导教师意见 (根据学生出勤及毕业设计(论文)完成情况,指导教师是否同意该学生参加答辩)指导教师(签名): 年 月 日指导教师(签名): 年 月 日*注:阶段成绩分A、B、C三级: A为全面完成任务、B为完成任务、C为完成摘 要随着互联网的发展,越来越多的人使用即时通讯工具。即时通讯(IM)是指一种能够让使用者即时发送和接收互联网消息等的实时通讯服务。即时通讯的最大特点在于它的即时性,不用等候,只要两个人都同时在线,就能像多媒体电话一样,传送文字、档案、声音、影像给对方。只要有网络,无论对方在天涯海角,或是双方隔得多远都没有距离。因此即时通信系统在现代社会中有着非常重要的地位。本论文详细的论述了即时通讯系统的客户端和服务器端的主要组成模块,论述各模块实现方式和详细的设计,每个模块的主要功能进行了阐述,并画出模块流程图。系统按照软件工程思想釆用面向对象和模块化设计方法设计,其中采用了网络通信技术、数据库技术、多线程技术等计算机技术,实现了文本通信、用户分组、用户管理等功能,具有通信即时性等特点。系统基于C/S体系结构,使用Java语言进行开发,实现多用户的即时通信。设计并实现了用户注册,登录,用户列表,多用户即时聊天和聊天记录管理等功能。基于Swing开发图形用户界面(GUI);通过套接字编程完成通信功能。最终实现了一款面向企业用户的在局域网使用的即时通讯系统。本系统基本实现了上述的研究,能够满足基本的通信需求。同时由于本系统采用模块化程序设计,具有良好可扩充性。关键词:Swing编程;C/S;多线程编程;即时通信系统AbstractWith the development of the Internet, more and more people are using instant messaging tools. IM (IM) is a way to allow users to send and receive instant messages and other Internet real-time communication services.The most important feature of instant messaging is its real time. As long as two peopleare online at the same time, you two do not have to wait and can send text, files, audio,video to each other like multimedia phones. As long as there is a network, there is no distance, regardless of how far between each other. Therefore,the real-timecommunication systems have played a very important role in modern society.This essay analyzed the main modules of the instant messaging systems client andserver in detail,discussed the implementations of each module and detailed design ofhe main functions of each module and drew the flow diagram. This system was designed by object-oriented and modular method, which used network communicationechnology, database technology and multi-threading technology and so on. This systemimplemented functions of the text communication, user groups,and user-management,and had real-time feature. This software based on C/S using Javaprogram language, realized multi-users5 instant messaging. I have designed and carried out sign-up,sign-in, user list, multi-user instant messaging, records management and so forth. Developed graphical user interface (GUI) using Swing. Implemented communications using socket programming.Finally, An instant messaging system was implemented which is oriented the business enterprise using on LAN. The System reflects the above research results, and can meet the communication needs. And because of modular programming, the system has well extensibility.Keywords:SwingProgramming;instantMessaging; Multi-thread Programming;Client/Server model目 录1 绪 论11.1 即时通倍系统概述和选题背景11.2 选题的目的和研究意义21.3 本论文的研究方法31.4 本论文的内容32 主要技术介绍52.1 开发环境介绍52.1.1 Java语言的产生与发展简介52.1.2 Java语言的主要特点52.1.3 Java web和struts2技术62.1.4 MyEcIipse72.2 Swing 编程72.3 多线程编程72.4 MySQL数据库简介82.5 即时通讯系统原理82.5.1 套接字通信92.5.2 数据报通信92.6 系统的主要架构92.7 TCP/IP 协议103 即时通信系统分析123.1 系统基本功能描述123.2 可行性分析123.3 系统需求分析124 即时通信系统设计154.1 数据库设计154.2 系统模块设计154.2.1 聊天系统工作原理图154.2.2 系统功能模块图:164.2.3 系统用例图174.2.4 活动图184.3 系统类设计194.3.1 Message类的设计:194.3.2 截图类的设计:214.3.3 聊天记录类的设计:214.3.4 服务端线程的设计:225 即时通信系统实现235.1 实现概况235.2 注册模块235.2.1 流程图235.2.2 关键代码245.3 登录模块255.3.1 流程图255.3.2 关键代码265.4 聊天模块305.4.1 流程图305.4.2 关键代码315.5 文件模块355.5.1 流程图355.5.2 关键代码365.6 用户管理模块415.6.1 流程图415.6.2 关键代码425.7 其他功能的实现455.7.1 截图功能的实现455.7.2 聊天记录功能的实现465.7.3 服务端线程的实现485.8 用户界面的设计485.8.1 登陆界面485.8.2 好友列表495.8.3 聊天界面50结 论51致 谢52参考文献53附录A 英文原文55附录B 汉语翻译621 绪 论1.1 即时通倍系统概述和选题背景即时通信(Instant Messaging,缩写为IM),是以万维网为基础,实现通信双方语言、文件、语音等实时信息传送的通信过程1。与Email等传统的通信方式相比,即时通信具有实时、方便、快捷、廉价、交互性好等优点。当今社会是一个信息化的社会,个人化的交流要求越来越高。同时,随着多媒体计算机技术和通信技术的迅猛发展,人们已经不能满足于简单的话音和文字通信,希望集语音、文字和图像于一体的多媒体通信2-4。即时通信技术自从1996年诞生以来,经历了 10余年的发展,已经从最初的简单的文字聊天通信工具,发展成为一个集通信和娱乐统一于一体的广泛平台。在这个平台上,除了可以进行最基本的实时通信(包括文字通信,还有视频通信和语音通信)之外,还可以进行游戏的娱乐项目,甚至可以进入一个虚拟的世界、一个虚拟的现实。现在著名的即时通信软件有QQ,Google Talk, Yahoo Messager,微信,飞信,Line, Skype等,这些即时通信系统在提供即时通信基本功能的基础上,各自有自己的特点。如飞信可以免费发送短信到好友的手机;Google talk的聊天记录是以邮件的形式保存在Google mail的邮箱里面5。而且除了实现PC与PC、手机与手机的通讯之外,还可以实现手机与PC之间的通信。但是这些优秀的即时通讯软件的使用必须有一个前提条件:必须保证因特网的畅通。如果因特网不畅通,那么这些软件都不能正常的使用,而且很多的即时通讯软件只能在Windows平台下运行,不能在Linux、Mac OS上跨平台运行,除了个别的几个工具之外,也不能再移动平台上运行。随着时代的发展,互联网时代的到来,人们的沟通交流方式也变得越来越丰富,如Email、BBS、即时通讯软件、微博、移动终端等。但是就在个人通信方式方兴未艾的时候,企事业内部交流通信却显得比较的尴尬,很多的企事业单位内部之间的工作沟通使用的市场上现有的个人即时通讯工具,部门同事之间相互加为好友,部门与部门之间建立一个又一个的群,这种方式貌似很方便同事之间的工作沟通。本人的QQ就加入了十几个群,个人的各种好友有近百人,我的同学中有的加入几十个群,各种好友有数百人之多。每天一打开通信软件,就会弹出各个群的信息,很多好友的信息,每天的交流沟通占去了很多很多的时间,工作效率低下。 发出一款能在企事业单位内部使用的、进行工作沟通交流的即时通讯软件,使得我们能在上班的时候免受工作之外的各种信息的干扰,提高我们的沟通质量,提升人们的沟通体验,就显得非常必要。而且人们也越来越关注一个问题,那就是安全保密。如何能在因特网不畅通的时候进行实时通信,如何保证个人信息的安全性,如何保证企业单位内部信息安全性,如何使得软件能够跨平台(不仅是PC平台之间,也包括PC和移动终端之间)使用,正是本论文的研究所在。1.2 选题的目的和研究意义现代社会的信息越来越发达,生活节奏也越来越快,于是新型的省时,省力而又高速便捷美观的即时通讯工具迅速发展起来。例如手机即时通讯和PC即时通讯,手机即时通讯的代表就是短信;而网站、视频即时通讯有:米聊、YY语音、QQ、MSN、百度hi、新浪UC、阿里旺旺、网易泡泡、网易CC、盛大ET、移动飞信、企业飞信等应用形式。尽管有这么多的通讯形式,但并不是都很完美,每种形式各有优劣。所以期待能用Java语言编程改善和解决一些问题,进一步提升即时通讯的功用。在信息化时代,作为人们使用最多的,与日常生活最为密切的即时通讯工具,就成了人与人之间进行信息交流,感情传递的主要方式。然而,以传统的QQ为代表的即时通讯工具过多的侧重于娱乐性,不能够适用于高效严谨的办公环境,它不仅影响员工的工作效率,而且使得企业的内部的资源信息存在着较大的安全隐患。因此,开发出一款能够适应办公环境,企业急需,方便高效的,又安全可靠的即时通讯工具就显得比较的紧迫,比较具有现实意义。通过研究开发出一款适合于企事业单位使用的即时通讯软件。本系统具有如下的特点:(1)由于减少了工作之外的因素的干扰,工作效率大大的提高,沟通体验得到了提升。(2)能够很快捷方便的获知对方是否在线。(3)由于交流通信使用的内部的即时通讯软件,所以能够很好的保护信息的安全。(4)系统应用之后,使得沟通的渠道通畅,交流实现扁平化,避免了过去传达汇报的传统交流沟通方式,使得沟通交流更加的有效。(5)由于采用C/S架构,所有的信息都是通过服务器转发,很方便的查询历史记录。本系统釆用模块化程序设计,系统具有良好可扩充性,可以在后续的开发中添加移动通信模块、电子邮件模块和视频通信模块,为系统的继续完善奠定了良好的基础。1.3 本论文的研究方法本文的设计目标是一个实用的面向企业的局域网即时通讯软件。首先对系统的可行性进行分析,确定了系统开发可行。然后经过需求分析确定了系统最终要实现的功能,确定了本系统所使用的后台数据库系统为MySQL,并对系统中的数据库进行了设计。系统釆用目前最为流行的开发工具Java语言进行开发。其中,网络通信部分采用流行的TCP/IP协议,程序采用典型的C/S(客户端/服务器)模式,这是传统的软件系统体系结构,能够将任务合理的分配的Client端(即客户端)和Server端(即服务器端),可以大大的降低系统的通讯开销,可以充分的利用C/S两端的硬件环境的优势。程序采用的是使用Socket套接字进行网络通讯模块设计,界面部分采用Swing轻量级控件,能够是系统的控件在各个平台上具有完全相同的界面,达到了很好的互通性。系统釆用模块化设计,釆用自顶向下的开发模式。开发过程中先根据功能将系统划分成不同的模块,然后将各个模块继续细化,划分成更小的子模块。模块化的好处是便于开发,便于调试,便于系统的后期维护,并为后续的开发预留接口,使得系统具有良好的可扩充性。本文最终设计出一个简易而实用的网络即时通讯软件,模式又分为服务器和客户端两部分:客户端通过输入服务器端的IP地址与服务器建立通信。考虑到要可以在局域网中应用,本系统使用的是第二种方法,经过设置,在局域网或internet上都可以使用。1.4 本论文的内容第一章绪论。系统的介绍了课题的选题背景,课题研究的意义,所釆用的研究方法以及本论文的结构。第二章主要内容介绍。详细的介绍了本系统所涉及到的即时通信的原理。包括即时通信系统的定义TCP/IP协议。介绍了本系统所涉及的JAVA编程技术。包括套接字编程,多线程编程技术,Swing轻量级图形用户界面开发,系统开发的C/S架构等。介绍了数据库操作的MySQL语言。第三章系统分析。首先从技术可行性、经济可行性和操作可行性方面讨论了系统的可行性。然后通过需求分析确定了系统所要实现的基本功能。第四章系统设计。确定了系统的总体框架,服务器端和客户端的详细功能和界面,并且确定了系统的数据库。第五章系统实现。重点介绍了系统的服务器端和客户端的实现。最后是结语和致谢。对整个发过程做出了全面的回顾,并系统的进一步改进和完善提出自己的意见。2 主要技术介绍2.1 开发环境介绍2.1.1 Java语言的产生与发展简介Java 是 James Gosling 领导的 Green 小组在 Sun Microsystems 公司开发的,1995年更名为Java ,并重新设计,用于开发Internet应用程序。近年来,Java变得非常流行,显示出独特的魅力:跨平台、动态的Web、Internet计算。Java被广泛接受并推动了 Web的迅速发展,同时Java技术也不断更新。Java是一个由Java虚拟机(Java Virtual Machine)和Java应用编程接口(Application Programming Interface简称API)构成的完整平台,有一个庞大的类库,其中包含很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾回收等服务的执行环境。Java的内容体系主要有:Java应用程序、Applet 小应用程序、JSP/Servlet、Java Bean、EJB、JavaME、JavaEE 等6。迄今为止,Java语言已作为一门综合性技术在众多领域得到发展和应用。2.1.2 Java语言的主要特点Java是面向对象的、简单的、分布式的、解释型的、健壮的、安全的、结构中立的、可移植的、高性能的、多线程的和动态的7。(1)Java语言是面向对象的程序设计语言。Java是一个纯粹面向对象的语言,强调的面向对象的特性,具备继承、封装及多态性,对软件工程技术能够提供很强的支持8。为了简单起见,Java语言只支持类之间的单继承,但支持接口之间的多继承。另外Java全面支持动态绑定。(2)Java语言是简单的。Java在设计的时候尽可能地接近C/C+,但是剔除了C+中很少使用的、难以理解的、易混淆的特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动垃圾回收机制9。总之,Java语法好比C+语法的一个“纯净”版本。Java简单性的另一方面是小。(3)Java语言是分布式的。从诞生起,Java就与网络联系在一起,它强调网络特性,内置TCP/IP、HTTP、FTP协议类库,Java应用程序能过通过URL打开和访问网络上的对象,其便利程度如同访问本地文件系统一样。另外,Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。(4)Java语言是解释型的。Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。(5)Java语言是健壮的。Java通过强类型机制、异常处理、垃圾的自动收集等机制来保证Java程序的健壮性。Java与C+最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。Java的安全检查机制使得Java更具健壮性。(6)Java语言是安全的。Java程序在语言定义阶段、字节码检查阶段及程序执行阶段进行的三级代码安全检查机制,对参数类型匹配、对象访问权限、内存回收、Java小应用程序的正确使用等都进行了严格的检查和控制,可以有效地防止非法代码的入侵,阻止对内存的越权访问,能够避免病毒的侵害。(7)Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),只要有Java运行时系统,这种字节码不仅可以很容易地在任何机器上被解释执行,而且还可以迅速地翻译成本地机器的代码。(8)Java语言是可移植的。与C/C+不同,Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关算法都做了明确的说明。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。(9)Java是高性能的。Java采用JIT编译器(即时编译器),而即时编译器的基本工作方式是一次把字节码编译为本地代码,并将结果缓存起来,在需要的时候重新调用,由于这种方式只需要进行一次解释,从而极大地提高了常用代码的运行速度。(10)Java语言是多线程的。只要操作系统支持,Java中的线程就可以利用多个处理器。在不同的机器上,只是调用多线程的代码完全相同,Java把多线程的实现交给了底层的操作系统或线程库来完成。(11)Java语言是动态的。Java执行代码是在运行时动态载入的。在网络环境下,Java语言编写的代码用于客户端架构可减少维护工作。另外,类库中增加的新方法和其他实例不会影响到原有程序的运行。2.1.3 Java web和struts2技术采用B/S的结构实现服务器端,对用户和在线用户进行增删改查,和踢用户下线,以及开启服务器和关闭服务器。客户端采用C/S结构,管理端采用B/S的结构,用Tomcat 作为服务器,MySQL作为数据库,还使用到了WindowBuilder开源框架进行界面开发。2.1.4 MyEcIipseMyEclipse 企业级工作平台(MyEcIipse Enterprise Workbench,简称 MyEcIipse )是对Eclipse IDE的扩展,集成了从J2EE到各种轻量级的框架(Struts,Spring,Hibemate等等),有利于程序的一体化开发。简单而言,MyEcIipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错,完整支持 HTML,Stmts,JSF,CSS,Javascript,MySQL,Hibernate。2.2 Swing 编程javax.swing包在图形界面设计上比AWT更丰富,更美观。Swing拥有4倍于AWT的用户界面组件,他是在AWT包的基础上的扩展。本系统中大量使用了Swing组件编程。本系统用到的Swing组件有面板(JPanel)、滚动窗口(JscrollPane)、选项板(JTabbedPane)、按钮(JButton)、组合框(JComboBox)、标签(JLabel)、表格(JTable)、文本域(JTextField)、文本区域(JTextArea)。其中文本域(JTextField)是用来输入或显示字符串的Swing组件12,文本区域(JTextArea)可以让用户输入多行文本的Swing组件12。2.3 多线程编程多任务处理有两种截然不同的类型:基于进程的和基于线程的。进程是程序的一次动态执行,对应了从代码加载、执行至执行完毕的一个完整过程。一个进程中既包括所要执行的指令,也包括执行指令所需的任何系统资源,如CPU、内存空间、I/O端口等,不同进程所占用的系统资源相对独立。因此,基于进程的多任务处理的特点是允许你的计算机同时运行两个或更多的程序。线程是进程执行过程中产生的多条执行线索,是比进程更小的执行单位,必须栖身于某一进程之中,有进程触发执行。基于进程的多任务处理的特点是一个程序可以同时执行两个或多个任务的功能。多线程程序比多进程程序需要更少的系统开销。在创建或撤销进程时,系统都要为之创建和回收进程控制块,分配或回收资源,如内存空间和I/O设备,系统所付出的开销明显大于创建或撤销时的开销。在进程切换时,涉及到当前进程CPU环境的保存及新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量寄存器内容,不涉及存储管理方面的操作8。因此线程间的切换也是低开销的。Java支持内置多线程编程。在本系统中,设置后台线程处理服务器和客户程序的通信。服务器资源以轻量级的线程提供,和多个客户线程并发连接通信。这样可以减轻服务器端的开销,同时保证了多个用户端连接能够得到快速而高效的服务9。2.4 MySQL数据库简介MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,MySQL是最佳的选择,而且由于MySQL是开放源代码的软件,因此,可以大大降低总体的拥有成本。目前,在Internet上所流行的主要网站的构架方式是LAMP(Linux+Apache+MySQL+PHP/Perl/Python)和LNMP(Linux+Nginx+MySQL+php/perl/Python),即使用Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。2.5 即时通讯系统原理Java支持流套接字和数据报套接字。流套接字(stream socket)使用传输控制协议(TCP)进行数据传输,而数据报套接字使用用户数据报协议(UDP)10。2.5.1 套接字通信网络程序设计通常涉及一个服务器和一个或多个客户端。客户端向服务器发送请求,服务器响应请求。客户端从尝试建立与服务器连接开始,服务器可能接受或拒绝连接。一旦建立连接,客户端和服务器端就可以通过套接字进行通信。套接字(Socket)是两个主机之间逻辑连接的端点,用来实现客户方和服务方的连接。Java对套接字通信的处理非常类似于对输入输出操作的处理,因此,程序对套接字读写就像对文件中读写数据一样容易。套接字分为服务器端套接字、客户端套接字。首先创建一个服务器,这需要创建一个服务器套接字server socket,在创建服务器套接字之后,服务器使用下列语句监听连接:Socket socket = ServerSocket .accept();客户端执行下列语句请求与服务器进行连接:Socket socket = new Socket (serverName,port);当服务器和客户端建立连接后就可以进行通信了。由于本系统存在单个服务程序与多个客户程序通信的可能,所以服务程序要响应客户程序不应该花很多时间,否则客户程序在得到服务前有可能花很多时间来等待通信的建立,然而服务器程序和客户程序的会话可能很长,因此,为加快对客户程序连接请求的响应,比较好的解决方法是服务器主机运行一个后台线程,这个后台线程处理服务器和客户端程序的通信。而客户端只要能够顺序处理服务器程序的响应就可以了,因此客户端程序通常不使用多线程。2.5.2 数据报通信数据报是一种无连接的通信方式,它的速度比较快,但是由于不建立连接,不能保证所有数据都能到达目的地6。所有一般用于传送非关键性的数据。发送和接收数据报需要使用Java类库中的DatagramPacket类和DatagramSocket类。2.6 系统的主要架构基于C/S的体系架构:C/S架构,即Client/Server(客户机/服务器)结构,是传统的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。客户端用于用户的注册、登录、通讯,而服务器端用来接收用户注册信息、验证登录信息以及转发用户之间相互通讯的信息。B/S结构(Browser/Server结构)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、速度快、效果优。2.7 TCP/IP 协议TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议),是Internet最基本的协议、Internet国际互联网的基础,主要的组成部分是网络层的IP协议族和传输层的TCP协议族。TCP/IP协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了 4层的层级结构:网络接口层、网络层、传输层、应用层。应用层应用进程应用进程应用进程应用进程UDPTCP传输层网络层IGMPIPICMPARPRARP网络接口层网络接口图2-1 TCP/IP协议体系结构网络接口层:提供了 TCP/IP与各种物理网络(局域网、广域网等)的接口,并为网络层提供服务。网络层:主要功能是管理Internet地址、路由选择、数据的分片和重组。这一层解决了计算机之间的通信问题,该层的协议统称为IP协议。传输层:主要功能是为Internet提供可靠地传输控制,主要的协议包括TCP协议和UDP协议。应用层:提供各种应用服务,例如HTTP、SMTP、FTP等协议。每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:IP协议是给因特网上的每一台电脑提供一个IP地址,保证网络是畅通的,但是不能保证发送的数据都能到达指定的目标IP,即不能保证数据传输的可靠性15。而TCP协议则解决了数据传输可靠性的问题。它负责发现传输的问题,一旦发现传输过程中有数据包丢失就会发出信号,自动要求将丢失的数据重新传输,直到所有数据安全正确地传输到目的地,并且能够调整接收到的数据包,恢复数据到原来分片之前的顺序。3 即时通信系统分析3.1 系统基本功能描述客户端可以实现注册,即时聊天,相互之间收发文件,发送截图,查看历史聊天记录等功能。收发消息时,可以实现离线接收。服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。在后台管理系统,可以到对用户进行增删改查,查看在线用户,和踢用户下线。3.2 可行性分析本系统的可行性分析包括以下几个方面的内容:(1)技术可行性使用Swing 和socket技术,可以很轻松地开发出实用、简便、高效的基于网络的即时通讯系统。因此技术上是可以实现的。(2)经济可行性计算机网络已经普及,因此在网络设备上不需要进行大的投入。本系统需要一个MySQL数据库服务器,由于并发使用人数比较少,tomcat可以作为web服务器,所以成本很低。(3)操作可行性只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全不存在问题。如果要实现internet上通讯,只需要将服务器端运行在一个有固定IP的公网上就可以。综上所述,即时Java即时通讯系统是可行的。3.3 系统需求分析功能分析:本系统要实现的功能如下:(1)注册服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过JDBC与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。客户收到服务器返回的信息后,便打开窗口登录。(2)登录在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JDBC读取数据库,然后与用户输入的信息进行比对,如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,从数据库中取出好友列表,然后向客户端发送这些信息,客户收到后就在主窗口显示好友。(3)聊天客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。例如服务器接收到一个A发给B的消息,先判断B是否已经在线,如果在线就将信息发送过去。如果B不在线则把信息储存在服务器,等B上线了在发送给他。B接收到A发来的信息,如果是未建立对话窗口,则自动打开显示。(4)发送截图客户端A点击截图按钮,将屏幕锁定,截取图片,将图片储存在byte数组中发送到服务器端。服务器端根据发送人信息和接收者信息来转发。B接收到A发来的截图信息,会根据byte构造图片,将图片显示出来。同样,如果是未建立对话窗口,则自动打开显示。(5)发送文件客户端A点击发送文件按键,从本地选择文件,将文件在byte数组中分批次发送到服务器端。服务器端根据发送人信息和接收者信息来转发。B接收到A发来的文件信息,会根据文件发送的状态和byte构造文件13-14。(6)日志客户端发送和接收到的信息都会储存在文本文档中。默认储存在C盘下面,会以用户的登录账号为名。(7)对用户的操作 管理员通过B/S的系统对用户进行增加,修改,删除,查找等操作,对系统进行维护。(8)在线用户的操作 管理员通过B/S的系统对在线用户操作,可以踢用户下线。4 即时通信系统设计4.1 数据库设计本系统中所涉及的主要实体及其属性有:用户(用户账号,用户名,密码,个性签名,头像ID,年龄,性别)。 E-R模型如图所示passwordNamesignatureaccountUsersexProfileldage图4-1 系统实体及其属性表4-1 User 字段名数据类型字段说明键引用备注accountint(6)IDPK主键(自动增一)namevarchar(20)用户名称非空passwordvarchar(20)用户密码非空signatureVarchar(255)签名profileIDint(2)头像IDageint(3)年龄sexsex char(2)性别4.2 系统模块设计4.2.1 聊天系统工作原理图服务器客户客户客户 Socket(TCP) Socker(TCP) Socker(TCP).图4-2 系统工作原理4.2.2 系统功能模块图:JAVA聊天系统聊天模块文件模块登录模块注册用户管理模块文件接收文件发送发送文字发送图片修改用户增加用户删除用户在线用户管理查找用户踢用户下线查看在线用户图4-3 系统模块4.2.3 系统用例图普通用户的用例图:注册文字登录用户聊天uses图片uses发送文件文件uses接收文件uses图4-4 普通用户用例图后台管理员的用例图:管理员登录增加用户修改用户查找用户删除用户踢用户下线查看在线用户图4-5 后台用户用例图4.2.4 活动图(1)用户登陆活动图首先填写登录信息,提交以后服务器会对用户名和密码进行验证。如果不正确,返回一个提示信息。如果登陆成功,就更新在线状态。通知所有好友自己已经上线。服务器再检查是否有他的离线消息,如果有这立即发送给用户。客户机服务器填写登录信息登录请求 校验身份创建拒绝登录消息登录请求(失败)身份不符更新在线状态返回在线好友创建登录成功消息登录请求(成功)向在线好友发布上线信息创建离线消息好友离线消息消除离线消息记录图4-6 用户登录活动图(2)发送消息活动图短消息发送以后,服务器端对应的监听线程会接收到一个数据包。此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者17。如果不在线,存在服务器端,等它上线在发送。服务器客户机客户机填写短信内容短信发送短信 监听端口对方已离线则发往服务器网络故障成功发送写入离线消息库监听端口短信(发送失败)接收短信图4-7 发送消息活动图4.3 系统类设计4.3.1 Message类的设计:客户端和服务器端通信时,发送的都是Message类的对象,因此Message类的设计很重要。表4-2 Message属性名作用private Integer msgType;信息类型private String content; 信息的文本内容private Integer senderAccount;发送者accountprivate Integer receiverAccount;接收者accountprivate String time;发送时间private User myself;priva
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公场所租赁合同协议书
- 合同分包协议书样本模板
- 2025房屋转让协议书
- 中学教学楼施工合同范本
- 公园广告合同协议书范本
- 光伏项目能源管理协议书
- 入股旅游合同协议书范本
- 个人跟公司解除合同协议
- 优惠的注册公司合同范本
- 医美与影楼合作合同范本
- 肾动脉狭窄的超声诊断课件整理
- 金丝键合工艺培训汇编课件
- 奥维互动地图使用介绍课件
- 小学语文新课程标准最新版2022
- 室外雨污水、消防管网施工方案
- 传染病学总论-人卫最新版课件
- (中职)计算机组装与维修电子课件(完整版)
- (高职)旅游景区服务与管理电子课件完整版PPT全书电子教案
- 部编版七年级语文上册教案(全册)
- 《汉服》PPT课件(完整版)
- 某国有企业精细管理降本增效经验交流汇报材料企业降本增效.doc
评论
0/150
提交评论