
聊聊天系统 需求分析.doc
36页目录 系统分析与设计 02.1 需求分析 102.2系统总体框架 122.2.1总体设计 122.2.2功能模块 132.3系统详细设计 242.3.1多线程设计 242.3.2数据库设计 252.3.3服务器的设计 252.3.4客户端的设计 262.3.5消息通信的设计 26 绪论 1.1选题背景 1.1.1 即时消息系统的研究现状 即时消息系统[1](Instant Messenger,IM)是一种在后 PC 时代兴起的,以 Internet 网络为基础的,允许交互双方即时地传送文字、语音、视频等信息,能够跟踪网络用户状态的网络应用软件即时消息系统产生有着深刻的社会原因:人们都有渴望社交,获得社会尊重、实现自我的需求,这正是即时消息软件风行的原动力,而物质文明的日益发达所带来副作用,又使得人们习惯与周围的人保持距离,以致人们更愿意对陌生人敞开心扉,在网络中可以跨越年龄、身份、行业、地域的限制,达到人与人、人与信息之间的零距离交流从这点上讲,即时消息系统的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间国内最为流行的即时消息软件是 OICQ(简称 ) 。
它以良好的中文界面和不断增强的功能形成了一定的 网络文化该软件是由腾讯公司于 1999 年 2 月自主开发的基于Internet的即时消息系统腾讯 目前已成为中国最主要的即时消息服务网络软件作为一种即时消息工具, 支持显示好友、即时传送文字、语音和文件等功能 还与无线寻呼、GSM 短信息、IP 网互联,为用户提供互联网短信及信息增值服务腾讯 开发和拓展统一、高速、丰富的互联网应用平台、广告业务、移动通信业务、ISP及IP合作业务、企业商用即时消息服务、客户支持及呼叫业务 1.1.2 即时消息系统的发展趋势 21世纪将是网络化、信息化的世纪,信息的融合已经成为社会发展的主流方向[2]即时消息系统将不断与信息交流领域的系统相互集成和渗透,扩展其自己的功能和应用范围,满足未来话音,数据和视频的多媒体应用需要,使即时消息以更丰富的接入方法,更高的服务质量,更友好的面貌呈现在世人的面前 从功能角度来看,即时消息系统向支持全媒体方向发展,随着多媒体技术在网络应用中的发展,即时消息系统承载的媒体,不再局限于原来的文字、语音和文件的信息交换,信息载体扩展到图形、图像和流媒体等多媒体业务上目前ICQ 和 预设了部分简单的表情图像, 通过传输图像代码来传递表情图像,可以被视为即时消息开发商开发支持图形、图像为载体的即时消息软件的开端。
从应用范围角度来看,即时消息系统集中在 Internet 个人用户之间的信息交流应用,随着网络技术应用的发展,即时消息系统应用范围向园区化、集团化拓展,应用领域突破个人,而用于远程教学、远程医疗、远程演示、网络会议等领域1.1.3论文研究的主要内容本论文的主要工作是利用编程技术建立一基于 J2SE 的即时消息系统,主要实现网络即时聊天功能在建立这个系统的过程中,我将会研究JAVA语言,多线程编程、网络编程以及数据据等方面的知识 在我的论文中,我将会研究即时消息的发展,并针对不同即时消息工具之间不能互通的弊端,介绍即时消息系统中的应用为了更好地实现系统,我们还要研究J2SE 技术在论文中介绍了 J2SE 的体系结构、系统设计以及 J2SE 的开发环境熟悉了开发平台,我们还要了解 基于TCP/IP 的 Socket 网络连接的基础知识,包括网络通信系统架构及 Socket 通信在该系统中的应用等内容在论文中将着重介绍网络即时消息系统的设计和实现,包括界面及各个功能模块的设计,给出了相应的流程图并对其功能做了详细描述,最终实现了客户端之间的即时聊天通信功能最后是结尾部分,对本文做了总结并针对该系统提出了一些不足和今后需要改进的地方。
1.2 技术背景 1.2.1 C/S 模型在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网[3],Client/Server在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源这里客户和服务器都是指通信中所涉及的两个应用进程(软件)使用计算机的人是计算机的“用户”(user)而不是“客户”(client)但在许多国外文献中,也经常把运行客户程序的机器称为client(这种情况下也可把client译为“客户机”),把运行服务器程序的机器称为server所以有时要根据上下文判断client与server是指软件还是硬件它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向1.2.2 TCP/IP 协议1. IP 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议[4] IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址) 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2. TCP如果IP数据包中有已经封好的TCP数据包[5],那么IP将把它们向‘上’传送到TCP层TCP将包排序并进行错误检查,同时实现虚电路间的连接TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCPDNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息 3. UDPUDP与TCP位于同一层,但它不管数据包的顺序、错误或重发因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS相对于FTP或Telnet,这些服务需要交换的信息量较小使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP) 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
4. TCP与UDP的端口结构TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接用户使用Telnet客户程序与服务进程建立一个连接客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告因而,这个连接是双工的,可以用来进行读写 两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: l 源IP地址: 发送包的IP地址; l 目的IP地址: 接收包的IP地址; l 源端口: 源系统上的连接的端口; l 目的端口: 目的系统上的连接的端口 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息一个端口对应一个16比特的数服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯1.2.3编程技术1.JAVA语言Java[6]是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。
用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet另一方面,Java技术也不断更新 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用Java对对象技术的全面支持和Java平台内嵌的API[7]能缩短应用系统的开发时间并降低成本Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库2. Winsock Windows下网络编程的规范-Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口 通信的基础是套接口(Socket),一个套接口是通讯的一端在这一端上你可以找到与其对应的一个名字一个正在被使用的套接口都有它的类型和与其相关的进程套接口存在于通讯域中通讯域是为了处理一般的线程通过套接口通讯而引进的一种抽象概念。
在一次网络通信/连接中有以下几个参数需要被设置:本地IP地址 - 本地端口号 - 对方端口号 - 对方IP地址左边两部分称为一个半关联,当与右边两部分建立连接后就称为一个全关联在这个全关联的套接口上可以双向的交换数据如果是使用无连接的通信则只需要建立一个半关联,在发送和接收时指明另一半的参数就可以了,所以可以说无连接的通信是将数据发送到另一台主机的指定端口此外不论是有连接还是无连接的通信都不需要双方的端口号相同Socket 接口是访问 Internet 使用得最广泛的方法3.多线程编程多线程[8]是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率线程是在同一时间需要完成多项任务的时候被实现的使用线程的好处有以下几点: ·使用线程可以把占据长时间的程序中的任务放到后台去处理 ·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 ·程序的运行速度可能加快 ·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了在这种情况下我们。












