关闭

关闭

关闭

封号提示

内容

首页 廖俊毕业论文正确版.doc

廖俊毕业论文正确版.doc

廖俊毕业论文正确版.doc

上传者: 12木 2011-09-19 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《廖俊毕业论文正确版doc》,可适用于IT/计算机领域,主题内容包含摘要网络教育毕业论文题目: 基于TCPUDP协议的局域网即时通信工具的设计与实现姓名:廖俊 学号: 专业:网络工程指导教师:王瑞胡 年月摘要随着计算符等。

摘要网络教育毕业论文题目: 基于TCPUDP协议的局域网即时通信工具的设计与实现姓名:廖俊 学号: 专业:网络工程指导教师:王瑞胡 年月摘要随着计算机网络技术的发展各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布通信数据共享等等。局域网的发展也同样迅速。很多政府机构企业学校都是先以一个统一的局域网联结在一起再分别接入INTERNET因此基于局域网的即时通信工具就这样应运而生了。随着信息技术的发展即时通信(InstantMessage)软件应运而生即时通信工具让我们冲破了地域的界限随时随地和各地的朋友沟通联系它们已经成为新时代人们生活和工作中不可缺少的伙伴!即时通信(InstantMessage)由于其具有实时性、跨平台行、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信工具具有较强的现实意义。本毕业论文课题主要研究的就是基于TCPUDP协议的局域网内即时通信工具的开发。我们根据其体系结构与设计原理开发出了界面简洁、方便易用的即时通信工具。它的主要功能有:即时聊天、文件传输等。在该即时通信工具中传输都用到了TCPIP协议客户端之间采用的是点到点技术进行通信。本文首先概述了即时通信工具的背景其次介绍了软件开发的环境和开发技术和开发工具给出了系统的框架结构然后介绍了该即时通信工具的设计实现最后进行了简单的测试。本文设计并实现了基于局域网的简单即时通信系统系统采用CS模式底层通信公告SOCKET套接字接口实现服务器负责客户端的登录验证好友信息的保存和消息的发送。客户端采用点对点方式实现消息传递并能实现文件的传输。本系统基于JAVA使用Eclipse等作为开发工具完成即时通信系统的设计。关键词:局域网即时通信文件传输TCP协议UDP协议目录TOCo""hzu第一章绪论研究背景及研究意义即时通信的基本知识TCP与UDP的相关知识第二章相关工具及技术介绍系统开发环境系统开发所用工具Eclipse的简介及运用Java的简介及运用Socket的简介CS结构与WINDOWSSOCKETS网络编程第三章系统需求分析与总体设计即时通信工具需求分析性能分析系统设计的目标系统功能模块设计总体设计服务器端基本功能设计客户端基本功能设计第四章数据库设计数据库的基本概念概念结构设计逻辑结构设计物理结构设计数据库运行与实现第五章系统详细设计与实现用户管理新建用户模块登录模块删除好友模块用户登录获取信息模块查找用户模块添加好友模块建群模块即时聊天模块文件传输模块语音聊天模块服务器端的具体实现客户器端的具体实现新建用户登录界面即时聊天界面文件传输界面用户登录后获取好友信息视图查找好友视图添加好友视图建群视图结束语第一章绪论在网络飞速发展的今天互联网成为人们快速获取、发布和传递信息的重要渠道它在人们政治、经济、生活等各方面发挥着重要的作用。互联网上存在大量的信息人与人之间的沟通、信息交换显得尤为重要。人们一直在寻找一种方便、低廉的交流信息工具因此网上聊天便成为人们的首先而一个好的的即时通信工具是操作简单、方便界面美观大方、人性化、节约系统资源。一个好的即时通信工具不仅仅是方便了人们的生活同时也给企业带来了商业利益很多事情都可以通过进行聊天而解决、通过服务器的消息传输让用户能够很快的获取信息节约了时间也创造了更多的利益。研究背景及研究意义随着社会经济技术的发展即时通信在全球的应用越来越广泛从以前最开始的简单通信到现在视频聊天、查资料、看电视等功能的应用即时通信已经成为人们生活当中必不可少的一部分即时通信不仅仅应用到生活当中影响着人们的一切而且现在也应用到各个领域影响着整个世界。随着网络技术的发展即时通信正在成为在线活动中不可或缺的业务即时通信软件不仅仅只限于用户间的聊天活动运营商已经开始利用即时通信平台不断地进行业务的扩张和整合充分的运用到整个企业整个社会当中而即时通信软件的诞生也给企业的管理带来了新的思路和手段推动了企业工作效率的提高降低了办公费用引起了工程应用领域的研究热潮。即时通信的实时交互、低廉资费、方便快捷让其成为继电话、邮件等通讯工具之后的又一个充分融入现代企业沟通的互联网工具。但是任何事务在发展的同时也必然会带来各方面的问题比如最常见的安全问题即时通信的优点就是能够实时交互马上能够知道对方的一切然而这样也很容易照成安全隐患问题一旦没有做好加密、防火墙工作数据、资料等就很很容易遭到泄露被恶意篡改、窃听从而导致对方收到的信息是错误的这样也会给工作、生活等方面带来困难。所以当前研究网络即时通信系统是当今网络编程方面的一个热门课题。即时通信正成为在线活动中不可或缺的业务。小至个人、企业大至国家、世界演化着即时通信的飞速变化日益改变丰富着人们的生活。而在经济技术日益发展的情况下对即时通信的需求也越来越迫切所以在此前提下就急需一种两全其美的解决方案。即时通信的基本知识随着信息技术的发展即时通信(IM)软件应运而生即时通信工具让我们冲破了地域的界限随时随地和各地的朋友沟通联系它们已经成为新时代人们生活和工作中不可缺少的伙伴!即时通信(IM)是指能够即时发送和接收互联网消息等的业务。年即时通信的功能日益丰富逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。随着移动互联网的发展互联网即时通信也在向移动化扩张。目前微软、AOL、Yahoo等重要即时通信提供商都提供通过手机接入互联网即时通信的业务用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。即时通信是一个基于局域网平台而设计的系统其开发主要包括后台数据库的建立、维护以及前端应用程序的开发两个方面。前者要求建立起数据一致性、完整性、安全性高的库后者则要求应用程序功能完备能够题供前台顺利运行易使用等特点。即时通信具有:管理员设置客户端的单位组织结构信息客户端不需自行添加联系人联系人之间能够发送消息联系人之间能够互相传送文件管理员能够建立现了人分组加入分组后的联系人允许互相通信分组成员之间可以群发消息等功能。TCP与UDP的相关知识Java网络编程中有两种不同的通讯协议分别是TCP(面向连接)与UDP(面向无连接)两种协议各有优缺点。TCP:是TranferControlProtocol的简称是一种面向连接的保证可靠传输的协议。通过TCP协议传输得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接以便在TCP协议的基础上进行通信当一个socket(通常都是serversocket)等待建立连接时另一个socket可以要求进行连接一旦这两个socket连接起来它们就可以进行双向数据传输双方都可以进行发送或接收操作。TCPIP协议并不完全符合OSI的七层参考模型而是采用了层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。这层分别为:应用层:应用程序间沟通的层如简单电子邮件传输(SMIP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中它提供了节点间的数据传输服务如传输控制协议(TCP)、用户数据报协议(UDP)等TCP和UDP给数据包加入传输数据并把它传输到下一层中这一层负责传送数据并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能让每一块数据封包都能够到达目的主机(但不检查是否被正确接收)如网际协议(IP)。网络结构层:对实际的网络媒体的管理定义如何使用实际网络来传送数据。建立TCP连接的工作原理:一个TCP连接必须要经过三次“对话”才能建立起来简单的介绍一下:主机A向主机B发出连接请求数据包:“我想给你发数据可以吗?”这是第一次对话主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送一个在接收协调工作)的数据包:“可以你什么时候发?”这是第二次对话主机A再发出一个数据包确认主机B的要求同步:“我现在就发你接着吧!”这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步经过三次“对话”之后主机A才向主机B正式发送数据。UDP:是UserDatagramProtocol的简称是一种无连接的协议每个数据报都是一个独立的信息包括完整的源地址或目的地址它在网络上以任何可能的路径传往目的地因此能否到达目的地到达目的地的时间以及内容的正确性都是不能被保证的。举例:一个UDP的简单应用。我们经常使用“ping”命令来测试两台主机之间TCPIP通信是否正常其实“ping”命令的原理就是向对方主机发送UDP数据包然后对方主机确认收到数据包如果数据包是否到达的消息及时反馈回来那么网络就是通的。其中TCP提供IP环境下的数据可靠传输它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说它是事先为所发送的数据开辟出连接好的通道然后再进行数据发送而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说TCP对应的是可靠性要求高的应用而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。以下是TCP面向连接框架等待客户连接请求阻塞建立连接处理服务请求服务请求服务响应图TCP面向连接框架以下是UDP非连接面向框架图服务器端客户端等待客户连接请求服务请求处理服务请求服务应答图UDP非面向连接框架第二章相关工具及技术介绍系统开发环境由于日趋发展的信息技术对通信工具的要求也逐渐提高而快速的成长当中带来的影响也是深远的那么如何在这样的环境下设计一个安全系数高、方便快捷的通信工具呢这就是本系统所要解决的问题。实现局域网用户之间的即时交流与文件传输建立网络即时通信安全机制保证信息传送的及时性和安全性。本系统采用基于java平台的Eclipse工具来设计并实现这一通信工具的设计与实现。系统开发所用工具系统开发平台:EclipseSQLServer系统开发语言:Java运行平台:WindowsXP运行环境:JDKEclipse的简介及运用Eclipse是一种基于Java的可扩展开源开发平台。就其自身而言它只是一个框架和一组服务用于通过插件组件构建开发环境。幸运的是Eclipse附带了一个标准的插件集包括为人熟知的Java开发工具(JavaDevelopmentToolsJDT)。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(PluginDevelopmentEnvironmentPDE)这个组件主要针对希望扩展Eclipse的软件开发人员因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件对于给Eclipse提供插件以及给用户提供一致和统一的集成开发环境而言所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的但它的用途并不限于Java语言例如支持诸如CC和COBOL等编程语言的插件已经可用或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础比如内容管理系统。更舒服的是利用Eclipse中的MyEclipse插件来搭建一个动态JSP程序快速简单、方便。Java的简介及运用技术上采用sun公司的java语言该语言有很多有点比如多线程、网络流概念、异常捕获处理、安全性以及速度与性能等方面并且具有可以一次编写、到处运行的跨平台优点。多线程:多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立线程又称为轻量级进程多线程技术允许你在一个应用程序中启动多个执行轻量程序使多段程序同时竞争CPU资源从而提高系统效率。而对于网络通讯工具来说多线程的特性是必须的不仅是为了效率而且可以实现同时处理多个请求。网络流:java中的网络通讯以及文件的读取都是以一种流的概念来理解的这样网络上数据的传输其实就等同于看成一台机器上文件的读取有利于理解与编写运用程序java类库中提供了丰富的IO流类资源以及网络编程类资源软件开发人员可以很方便的编写网络应用程序。例外处理:Java通过面向对象的方法来处理例外。在一个方法的运行过程中如果发生了例外则这个方法生成代表该例外的一个对象并把它交给运行时系统运行时系统寻找相应的代码来处理这一例外。我们把生成例外对象并把它提交给运行时系统的过程称为抛弃(throw)一个例外。运行时系统在方法的调用栈中查找从生成例外的方法开始进行回朔直到找到包含相应例外处理的方法为止这一个过程称为捕获(catch)一个例外。所以java的例外处理使非常方便的。跨平台:Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。Socket的简介Socket简称套接字用于实现网络上的客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接这个连接的端点称为套接字套接字是在比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求当一个连接请求到达时客户端和服务器端建立一个通信连接在连接过程中客户端被分配一个本地端口与一个socket建立连接客户端通过写socket来通知服务器以读socket中的信息类似的服务器也获得一个本地端口它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个sockt通过读写和客户端通信。Socket程序的工作过程:建立Socket连接:在通信开始之前由通信双方确认身份建立一条专用的虚拟连接通道。数据通信:利用虚拟连接通道传输数据信息进行通道。关闭:通信结束时再将所建的虚拟连接拆除。具体如下图:服务器图socket工作过程三次握手:第一次握手:原机主发送一个带有本次连接的序号的请求的一个数据帧。第二次握手:目的主机收到请求后如果同意连接则发回一个带有一个本次连接序号和源端机连接序号号的确认。第三次握手:源端机收到含有两次初始序列号的应答后在向目的主机发送一个带有两次连接的序列号的确认CS结构与WINDOWSSOCKETS网络编程通常的通信工具都采用客户端服务器(CS)体系结构CS结构是这样一种结构:它包括一个客户端(或前端)一个服务器(或称后端)客户端的作用是访问和处理远程服务器上的数据服务器的作用是接受和处理客户端的数据请求。有时可能有多个客户向同一个服务器同时请求服务这就需要服务器决定怎样处理这些请求。ClientServer结构是当前数据库应用程序中极为流行的一种方式。尤其是网络技术的发展使得当前很多系统都采用这种方式进行构造其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成这样有利于充分合理的利用系统资源另外它的服务器端还可以将信息集中起来任何客户机都可以通过访问服务器而获得所需的信息。ClientServer模型最终可归结为一种“请求应答”关系。一个请求总是首先被客户发出然后服务器总是被动地接收请求返回客户需要的结果。在客户发出一个请求之前服务器一直处于休眠状态。一个客户提出请求后服务进程被“唤醒”并且为客户提供服务对客户的请求作出所需要的应答如图所示。图客户端服务器通信结构视图在IP连接领域有两种通信类型:面向连接的(Connectionoriented)和无连接的(Connectionless)。在面向连接的套接字中使用TCP协议来建立两个IP地址端点之间的会话。一旦建立了这种连接就可以在设备之间可靠地传输数据。为了建立面向连接的套接字服务器端和客户端必须分别进行编程。在java包中有两个专门用户TCP协议编程的类:Socket类和ServerSocket类。这两个类提供了直观的易于使用的属性和方法从而降低了TCP协议编程的难度。。服务器端使用ServerSocket绑定一个端口然后循环等待通过accept()方法介绍来自客户端的连接而客户端则需要知道服务器端的IP地址和绑定的端口号然后通过Socket创建于服务器端的连接。关键代码如下:服务器端关键代码:Try{Server=newServerSockeet()ServersetReuseAssress(true)’InerSocketAddressaddress=newInetSocketAddress(“localhost”,监听的端口号)serverbind(address)while(true){Socketclient=Client=serveraccpet()等到客户端连接}}catch(Exceptione){eprintStackTrace()}客户端关键代码:Socketclient=newSocket(“服务器IP”,服务器监听的端口号)CS模式下Windowssocket编程示意图如图所示。服务器端图客户端建立通信连接请求数据响应数据图CS模式下socket编程第三章系统需求分析与总体设计即时通信工具需求分析伴随着当今互联网的迅速发展人们之间的信息交互的实时性能变得越来越重要传统的电子邮件交互已经不能够满足人们的即时通讯要求鉴于此种情况打算开发出一款类似于腾讯QQ的即时通讯软件只要经过注册你便可以获取一个帐号通过该帐号你可以在客户端登陆成功登录后便可以在互联网上与你的亲朋好友进行畅谈由于技术和时间问题该软件主要提供私聊、群聊、好友管理、群管理等常用功能其它一些功能比如文件传输、语音聊天和视频聊天等功能由于技术问题暂时没有实现可以在该系统的基础上实现这些功能也可以在此基础上进行更多功能的扩展。根据用户对聊天工具的要求可以分为以下几点:()操作简单方便、界面简洁美观()客户端能够注册新用户()可以在局域网实现文字和文件的传输()可以进行聊天记录保存()系统运行稳定、安全可靠性能分析作为一个简单安全的沟通通信平台安全及时通信系统需要保证数据通信的即时性以及通信过程和信息存储的安全性为使用者提供信息安全保证同时减少系统资源的消耗保证系统运行的速率。数据通信完整和可靠性:即时通信亦即用户间能实时发送和接收各种信息包括文本通信和文件传输其中保证数据的可到达性保证数据解读的正确性防止数据丢失和数据错位从而保证消息传达的可靠性。通信安全性:通信安全是指保证客户之间传送消息和文件的安全防止数据在传输过程中遭泄密、窃密或被篡改数据。通信效率和公平性:这主要体现在服务器端。服务器需要同时处理所有用户发送的各类信息并且需要完成数据库存储、读取、更新等操作。需要采用适当的方法提高服务器接受、解读、处理和发送数据的效率在指定时间呃逆完成需要的通信量提高系统的即时通信性能通信保证数据处理的公平性保证各客服端的信息能够被及时响应和处理。系统可控性:系统可控性是指系统运行期间完成数据存储、数据库备份、系统故障恢复等任务的性能包括用户注册管理、登陆管理、客户端运行过程中监控等模块的设计。防止重要数据的丢失或被篡改提高系统的运行可靠性增强系统使用者的信心。系统稳定性能:系统稳定性包括系统在高通信强度下是否能够正常、及时低处理各客服端的请求和信息系统在长时间工作状态下是否会出现异常以及系统容错性能等。防止系统崩溃和程序退出同时降低程序运行中CPU等资源的消耗。系统设计的目标本课题目标是实现局域网用户之间的即时交流与文件传输等通过基础的网络SOCKET编程为局域网内部的即时通信提供一个简单而较安全的解决方案。系统功能模块设计该系统主要包括三层客户端服务器端以及数据库服务器客户端用来提供用户的登录服务器端用来对登录的用户进行管理以及用来处理信息之间的转发数据库服务器主要存放一些重要的信息。它们之间的关系如下图所示:图系统关系图根据上述需求的描述对该系统按照功能进行了模块的细化主要包括用户管理、获取信息、查找好友、添加好友、建群、即时聊天个模块还有很多其它小模块这个模块是实现该系统的核心模块模块之间的耦合程度非常低其中注册模块是通过BS结构来实现不需要安装客户端。下图是上述的个重要模块的用例交互图。图软件结构图总体设计本系统是基于TCPUDP协议的局域网而设计的即时通信工具而功能的模块实现主要从客户端和服务器模块方面入手。服务器端基本功能设计作为一个多用户的即时通信软件做好服务器端的各项管理工作显得非常重要。比如对系统管理员的管理对用户的管理数据库数据的管理以及对服务器的开启和关闭的管理。为了使系统能保持长期的稳定运行本系统中设置了管理员对用户以及数据库进行管理和维护。以下是服务器端的功能设计:()管理员登录根据系统需求设置了管理员的等级。针对不同的等级有不同的登录方式。()开启服务每一个管理员都具有开启服务程序的功能这里服务是指专门为用户开启的功能。具体以下几种功能:接收并响应用户登录请求给用户发送好友上、下线通知接收并响应用户申请号码请求接收并响应用户下载好友基本资料请求转发、存储用户给好友的消息接收并响应用户添加好友请求接收并响应用户下线请求接收并响应用户修改个人资料请求给用户发送系统消息()关闭服务每一个管理员够具有关闭服务程序的功能。()修改管理员密码原始密码是由管理员在创建管理员的时候设定的而使用者可以根据自己的需要重新修改从而也提高了系统的安全性。()查看管理员()创建管理员()删除管理员()查看用户查看用户是所有管理员都具有的功能这主要是为管理员开放的功能。()创建用户管理员可以任意创建一个还没被注册的账号管理员可以根据需要创建特定的号码。()删除用户管理员可以任意删除用户当然只是在有必要的时候才进行删除。()关于系统提供一些系统的基本信息。()退出系统服务器端系统结构图:图服务器端系统框架客户端基本功能设计客户端的功能包括:注册新用户、用户登录、登录获取信息、查找用户、添加好友、删除好友、建群、即时聊天、文件传输、语音聊天。客户端系统结构图:图客户端系统框架第四章数据库设计数据库的基本概念数据库技术是数据管理的最新技术是计算机科学技术中发展最快的领域之一也是应用最广的技术之一。它已成为各行各业存储数据、管理信息、共享资源的最先进最常用的技术。数据库简单地说就是数据的仓库即数据存放的地方。数据库系统(databasesystems)是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。它是一个实际可运行的存储、维护和应用系统提供数据的软件系统是存储介质、处理对象和管理系统的集合体。数据库系统DBS(DataBaseSystem简称DBS)是一个实际可运行的存储、维护和应用系统提供数据的软件系统是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库使数据能被任何有权使用的人有效使用。数据库的设计包括数据库的结构设计和数据库的行为设计。()数据库的结构设计:根据给定的应用环境进行数据库的模式或子模式的设计。包括数据库的概念设计、逻辑设计和物理设计。又称为静态模型设计。()数据库的行为设计:确定数据库用户的行为和动作。又称为动态模型设计。数据库设计方法基于ER模型的数据库设计方法是在需求分析的基础上用ER(实体联系)图构造一个反映现实世界实体之间相互联系的模式然后将此该模式转换成基于某一特定的DBMS的概念模式。概念结构设计本课题即时通信工具的设计与实现的后台数据库时采用SQLServer作为数据库服务器在系统中前台与后台管理系统使用同一个数据库来完成各自的任务两者互不干扰且又相互联系这样保证了通信工具的安全性能。它与前台的程序的配合通过客户端完成数据存储、查询等操作。在通信工具的开发过程中为了实现各个功能模块和后台管理等功能在数据库中主要设计了有以下几个表:用户信息表、系统管理员表、好友信息管理表、即时通信表等。得到上面的数据项和数据结构后就可以设计出能够满足用户需求的尸体以及他们之间的关系为后面的逻辑结构设计打下基础。这些实体包含的具体信息通过相互之间的作用形成数据的相互传递。通信工具对象实体图如图所示:图通信工具对象实体图管理员信息实体图如图所示:图管理员信息实体图而根据本课题来看通信工具的设计则在概念结构设计中能够体现出来用户是一个实体账号、昵称、性别、年龄、等级等是用户实体的属性。这时等级只表示用户属于那个级别不涉及具体情况。用户实体图如图所示:图用户实体图数据库系统总体联系图如图所示:图数据库系统总体框架图概念结构设计的特点()能真实、充分地反映现实世界包括事物和事物之间的联系能满足用户对数据的处理要求。是对现实世界的一个真实模型。()易于理解从而可以用它和不熟悉计算机的用户交换意见用户的积极参与是数据库的设计成功的关键。()易于更改当应用环境和应用要求改变时容易对概念模型修改和扩充。()易于向关系、网状、层次等各种数据模型转换。概念结构设计的方法:设计概念结构的ER模型可采用以下四种方法()自顶向下:首先定义全局概念结构的框架然后逐步细化()自底向上:首先定义各局部应用的概念结构然后将它们集成起来得到全局概念结构()逐步扩张:首先定义最重要的核心概念结构然后向外扩充以滚雪球的方式逐步生成其他概念结构直至总体概念结构()混合策略:将自顶向下和自底向上相结合用自顶向下策略设计一个全局概念结构的框架以它为骨架集成由自底向上策略中设计的各局部概念结构。逻辑结构设计概念结构设计阶段得到的ER模型是用户的模型它独立于任何一种数据模型独立于任何一个具体的DBMS。设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型然后选择最合适的DBMS。设计逻辑结构时一般要分三步进行:将概念结构转换为一般的关系、网状、层次模型并将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换对数据模型进行优化一般的逻辑结构设计分为以下三步:()初始关系模式设计()关系模式规范化()模式的评价与改进。此过程有逻辑结构设计完成。即把每一个实体转换为一个关系。首先分析各实体的属性从中确定主键然后用关系模式表示。如:图数据库系统总体框架图为例可转换为关系模式:用户表(账号、头像、密码、个性签名)好友分组(用户、分组名)群(用户、群)图关系模式图物理结构设计数据库最终要存储在物理设备上。对于给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程称为数据库物理结构设计。物理结构设计的任务是为了有效地实现逻辑模式确定所采取的存储策略。此阶段是以逻辑设计的结构作为输入结合具体DBMS的特点与存储设备特性进行设计选定数据库在物理设备上的存储结构和存取方法。具体包括数据库文件的数据库组成、数据、表、数据表之间的联系、数据字段类型与长度、主键、索引等。在关系数据库中每个表所对应的字段记录的信息也不相同:JUSERS(用户表)用来存放用户注册时的基本信息Jmessages(消息表)用户存放用户发送的离线消息JFriends(朋友表)用户存放用户的好友信息JFriendsType(朋友类别表)用来存放用户的好友组信息JGroups(用户组表)用户存放用户的群组信息JGroupUsers(用户和组关联表)用户和组之间的关联表数据库运行与实现数据库投入运行标志着开发任务的基本完成和维护工作的开始数据库物理存储也会不断变化对数据库设计进行评价、调整、修改等维护工作是一个长期的任务。第五章系统详细设计与实现用户管理新建用户模块注册模块是整个系统最基础的模块当服务器收到用户的注册请求便开始接受客户传递的消息诸如客户的昵称、性别、籍贯、头像、个人资料等。便通过与后台数据库连接然后向数据库添加记录如果成功便向客户返回起申请号码客户收到服务器返回的信息后便打开主程序窗口。以下是业务流程图:图新建用户模块通过此模块可以实现密码的找回、密码的修改以及个人信息的查询。登录模块该模块主要给注册成功的用户提供一个登录界面用户根据自己注册的帐号信息可以与服务器交互如果提供的信息通过服务器的验证便可以成功的登录系统成功登录系统之后可以进行一些操作比如和好友聊天等使用该模块之前必须安装一个客户端。登录模块只是一个简单的页面主要填写用户名、密码之类的信息登录成功后的主界面包含了系统的大部分功能比如添加和删除好友、添加和删除好友分组、和朋友聊天等功能。以下是业务流程图:图登录模块删除好友模块登陆系统界面过后在主界面上则会显示用户分组情况以及好友的基本信息如昵称、个性签名等如果在用户的界面上出现了陌生人的信息用户可以选择直接拉入黑名单也可以选择直接删除。通过服务器的认证对此请求作出处理若服务器通过则可以删除好友。以下是业务流程图:图删除好友模块用户登录获取信息模块用户登录系统进入主界面之后除了在主界面上显示的信息外还可以获取其他信息可以通过在线搜索或者查找等功能获取用户想要的信息此功能模块能够通过客户端到服务器的响应快速便捷的查询到想要的信息便于用户能够更好的运用该系统。以下是业务流程图:查找返回图获取信息模块查找用户模块客户登录后按查找按钮后开始向服务器发出查找请求服务器读取数据库表中的请求信息并向客户返回其结果客户收到后在查找窗口中显示如果用户选择了一个好友就向服务器发送添加好友请求服务器收到后就向数据库表中添加好友的号码并从表中读取其基本信息返回给客服端然后客户收到并在主窗口显示该好友。并通过UDP通知该客户对方收到该消息后可以选择添加该用户为好友或者不。以下是业务流程图:图查找用户模块添加好友模块在客户向服务器发送请求添加好友信息后如果找到就返回用户服务信息打开一个用户信息显示界面该界面会提供一个“添加为好友”按钮可以进行好友添加则查找到好友的基本信息如账号和昵称。如果是你所要添加的好友则点击添加如不是则添加失败。以下是业务流程图:图添加好友模块建群模块根据用户的需要在本系统中可以实现建群功能用户注册以后群个数为。用户在执行添加群操作以后客户端分别将一个这个动作的信息发送给服务器。服务器端的表接受到这个请求会进行数据库操作将要添加的群消息插入到数据库中。如果成功则返回这个群的消息给客服端否则返回错误提示消息。以下是业务流程图:图建群模块即时聊天模块文件传输模块文件传输模块的功能主要有:()共享文件()查看并下载文件。()在启动文件传输服务器的共享文件功能之前要设置它的IP号和端口如果设置不好好友将无法看到这些共享的文件还有一个重要的步骤就是添加共享文件或目录最后启动文件共享。()使用文件传输的客服端要正确配置好服务器的IP和端口号以及下载好的文件的存放目录。如果其中之一配置不好文件下载将会失败。设置好后点击“连接”按钮如果配置正确这时将会看到服务器共享的文件。目前不能支持文件下载当看到一个文件夹以后可以双击该文件夹并查看文件夹里面的文件。下列视图说明:客户端向服务器发送文件传输请求如果服务器端同意传输就读取文件流并将数据流写到客户端。客户端读取到文件名之后立即点击打开则文件就会自动传输给对方。以下是业务流程图:图文件传输模块语音聊天模块当客户发送请求语音聊天给好友时客户端正在接收请求并将此请求发送给服务器服务求接收是否语音聊天将请求结果返回给客户端如果服务器端同意进行语音聊天则客户与好友之间的聊天已经连接如果服务器端拒绝进行语音聊天则返回消息好友拒绝接收语音聊天连接失败。以下是业务流程图:图语音聊天模块服务器端的具体实现服务器管理器的界面由两部分实现:一部分是左边的功能菜单另一部分是右边的功能桌面。当点击左边的菜单时就在右边桌面上显示具体功能供管理员操作。功能菜单用类JTree来实现定义一个根节点root再将需要的功能定义为root的子节点添加到根节点root下。部分代码如下:DefaultMutableTreeNoderoot=newDefaultMutableTreeNode(“系统”)finalDefaultMutableTreeNodeserver=newDefaultMutableTreeNode(“服务”)finalDefaultMutableTreeNodeopenserver=newDefaultMutableTreeNode(“开启服务”)rootadd(server)为root添加子节点serverserveradd(openserver)为server添加子节点openserver即开启服务的功能。JTreetree=newJTree(root)将root添加到tree下。treegetSelectionMode()setSelectionMode(TreeSelectionModelDISCONTIGUOUSTREESELECTION)功能桌面用一个JTabbedPane类来实现具体的每个功能用Panel类来实现。部分代码如下:JTabbedPanetab=newJTabbedPane(JTabbedPaneTOP)定义一个桌面。Panelsyspanel=newPanel()tab上添加一个sysPanel即修改管理员密码模块PanelsysPanel=newPanel()查看管理员模块PanelsysPanel=newPanel()创建管理员模块PanelsysPanel=newPanel()删除管理员模块PaneluserPanel=newPanel()查看用户模块PaneluserPanel=newPanel()创建用户模块PaneluserPanel=newPanel()删除用户模块下面介绍删除用户功能模块的具体实现。当有不合法的用户时管理员可以删除它。当管理员提交删除请求后系统首先到数据库检索是否存在该用户如果存在则检索该用户的好友表取出好友名单。再根据好友名单删除用户在其好友中的记录。然后删除用户的好友表和聊天信息表。最后在用户现象表中删除该用户的记录。客户服务程序用自定义类StartServer来实现。这是服务器程序中最关键、最重要的部分该类没有操作界面只能在服务管理器中开启它。对于一个多用户并发服务的即时通信软件来说效率和稳定性是非常重要的。为了满足这两个需求客户服务程序采用了java多线程技术数据库连接池技术。通信协议采用了TCP和UDP协议。端口主要分为两种:一种是TCP端口一种是UDP端口。计算机之间相互通信的时候分为两种方式:一种是发送消息以后可以确认信息是否到达也就是有应答的方式这种方式大多数采用TCP协议一种是发送以后就不管了不去确认信息是否到达这种方式大多采用UDP协议。对应这两种协议的服务提供的端口也就分为TCP端口和UDP端口。以下程序代码的作用是为每一个接收用户请求的DatagramSocket绑定端口注释中介绍了各个DatagramSocket用途。dsLogin=newDatagramSocket()创建一个DatagramSocket用来接收用户登录信息dsApp=newDatagramSocket()接收用户申请账号信息dsExit=newDatagramSocket()接收用户下线请求dsLoadF=newDatagramSocket()接收下载好友基本资料请求。dsMess=newDatagramSocket()用来接收转发给好友的消息。dsAdd=newDatagramSocket()接收添加好友请求。dsMod=newDatagramSocket()接收修改个人资料请求客户器端的具体实现要做一个受广大用户欢迎的软件仅仅实现基本功能是远远不够的很关键一点是要有良好的人机交互功能界面不仅要美观还要实用。本系统的功能和界面都是按照人们的操作习惯来实现的在此基础下能够实现文件传输、建群、即时聊天和语音聊天等功能当然除此之外还有其他的功能实现都充分体现出来即时通信工具的交互能力。以下部分功能模块视图新建用户当用户第一次登陆时必须先申请一个账号申请号码的功能在一个继承了Frame类的Application类中实现。申请号码时用户必须填写必要的基本信息。用户注册视图如图所示:图用户注册视图实现过程如下:Imageimage=newImage创建一个Image数组对象用户存放所有的头像for(inti=<=i){imagei=thisgetToolkit()getImage(“touxiang”i“gif”)}加载所有的头像DefaultBoundedRangeModelmodel=JScrollBarSBarl=添加一个滚动条来选择头像SBarl=newJScrollBar(ScrollbarHORIZONTAL)model=newDefaultBoundedRangeModel(,,,)publicvoidrepaint(Imageimage){getGraphics()drawImage(image,this)显示用户选择的头像}try{向服务器发送请求号码请求DatagramSocketdsAPP=newDatagramSocket()DatagramPacketdpApp=newDatagramPacket(strAppgetBytes(),strAppgetBytes()Iength,InetAddressgetByname(“ServerAddress”),)dsAppsend(dpApp)dsAppclose()}Catch(Exceptionex){exprintStackTrace()}服务器收到请求后就会给用户分配一个账号并返回给用户。登录界面用户登录时将账号、密码、登录方式三个信息保存到一个字符里发送到服务器。客户端用户登录界面如图所示:图登录模块图主要代码:PublicBooleancheckUser(Stringuser,Stringpsw)user是用户的登录账号(Icq账号)psw是用户的登录密码{booleanb=falsetry{组织sql语句访问数据库和条件参数列表Stringsql=”selectIcqNo,IcqNc,IcqIconfromIcqwhereIcqNo=andIcqPsw=”通过用户名和密码要求数据库返回用户的:账号、昵称、头像Stringparas={user,psw}Shp=newSqlHelper()ResultSetrs=shpquery(sql,paras)If(rsnext()){ch=rsgetString()用户Icq账号ch=rsgetString()用户的昵称ch=rsgetString()用户的头像btrue}}catch(Exceptione){eprintStackTrace()}Finally{shpclose()}returnb}即时聊天界面用户进入聊天模块如下图所示可以在下方文本框内输出消息按发送键发送完成一对一文字传输。按文件传输可以进入文件传输模块按远程控制可以进入远程控制界面按远程被控可以进入等待被控制界面如图:图即时聊天模块图主要代码:publicstaticvoidclient(StringstrStringip){try{Sockets=newSocket(ip)OutputStreamos=sgetOutputStream()oswrite(strgetBytes())osclose()sclose()}catch(Exceptionex){exprintStackTrace()}}发送消息publicvoidrun()try{InputStreamis=sgetInputStream()bytebuf=newbyteintlen=isread(buf)Stringstr=newString(buflen)}读取接收消息文件传输界面除了文本聊天以外局域网内另外一个应用是文件的共享。文件共享的实现离不开文件传输由于TCP协议能保证数据包的准确到达以及各数据包到达的顺序和数据包发出的顺序相同处于可靠性和效率考虑在次文件传输采用TCP协议来实现用户之间文件的传输。用户在聊天过程中若收到文件传输消息则在聊天窗体上显示文件传输请求若用户拒绝文件传输则向好友发送拒绝接受文件消息否则像好友发送接受文件消息和本机IP及文件接受端口并开辟一个服务器端用于接受文件。文件发送端如图:图文件发送端视图文件接收端如图:图文件接受端视图主要代码:privatevoidsendFile(){intlengthswitch(fileTransStatus){caseFILETRANSSTATUSFILENAME:{try{bytebuffilename=aFilegetName()fileSize=aFilelength()buf=doPackage(,))writeToSocket(buf)fileTransStatus=FILETRANSSTATUSWAITFORCONFIRM}catch(IOExceptionex){SetError(“对方取消了文件传输或网络错误!”)}Break}caseFILETRANSSTATUSWAITFORCONFIRM:{intflagtry{flag=readFromSocket()if(flag==){setError(“对方拒绝了文件传输!”)}else{FileTransStatus=FILETRANSSTATUSCONTEXTtransFileLength=readLongFromSocket()fDisskip(transFileLength)aSocketsetSoTimeout()}}catch(SocketTimeoutExceptionex){SetError(“网络超时!”)}catch(IOExceptionex){SetError(“对方取消了文件传输或网络错误!”)}Break}caseFILETRANSSTATUSWAITFORCONFIRM:{length=readFromFile(dataBufCACHESIZE)try{writeToSocket(

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/47
1下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部