聊天系统需求分析1Word格式文档下载.docx

上传人:b****3 文档编号:18482270 上传时间:2022-12-17 格式:DOCX 页数:34 大小:74.69KB
下载 相关 举报
聊天系统需求分析1Word格式文档下载.docx_第1页
第1页 / 共34页
聊天系统需求分析1Word格式文档下载.docx_第2页
第2页 / 共34页
聊天系统需求分析1Word格式文档下载.docx_第3页
第3页 / 共34页
聊天系统需求分析1Word格式文档下载.docx_第4页
第4页 / 共34页
聊天系统需求分析1Word格式文档下载.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

聊天系统需求分析1Word格式文档下载.docx

《聊天系统需求分析1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《聊天系统需求分析1Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。

聊天系统需求分析1Word格式文档下载.docx

1.2技术背景

1.2.1C/S模型

在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网[3],Client/Server。

在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。

这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。

使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。

但在许多国外文献中,也经常把运行客户程序的机器称为client(这种情况下也可把client译为“客户机”),把运行服务器程序的机器称为server。

所以有时要根据上下文判断client与server是指软件还是硬件。

它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;

因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。

这也就是目前应用系统的发展方向。

1.2.2TCP/IP协议

1.IP

 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议[4]。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;

相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。

IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。

IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。

也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。

IP确认包含一个选项,叫作IPsourcerouting,可以用来指定一条源地址和目的地址之间的直接路径。

对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。

这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。

那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

2.TCP

如果IP数据包中有已经封好的TCP数据包[5],那么IP将把它们向‘上’传送到TCP层。

TCP将包排序并进行错误检查,同时实现虚电路间的连接。

TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。

应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

面向连接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。

DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

3.UDP

UDP与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连接唯一地使用每个信息中的如下四项进行确认:

● 

源IP地址:

发送包的IP地址;

目的IP地址:

接收包的IP地址;

源端口:

源系统上的连接的端口;

目的端口:

目的系统上的连接的端口。

端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。

一个端口对应一个16比特的数。

服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。

这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯

1.2.3编程技术

1.JAVA语言

Java[6]是由SunMicrosystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。

用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:

跨平台、动态的Web、Internet计算。

从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。

另一方面,Java技术也不断更新。

 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。

Java对对象技术的全面支持和Java平台内嵌的API[7]能缩短应用系统的开发时间并降低成本。

Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。

特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

2.Winsock

Windows下网络编程的规范-WindowsSockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。

通信的基础是套接口(Socket),一个套接口是通讯的一端。

在这一端上你可以找到与其对应的一个名字。

一个正在被使用的套接口都有它的类型和与其相关的进程。

套接口存在于通讯域中。

通讯域是为了处理一般的线程通过套接口通讯而引进的一种抽象概念。

在一次网络通信/连接中有以下几个参数需要被设置:

本地IP地址-本地端口号-对方端口号-对方IP地址。

左边两部分称为一个半关联,当与右边两部分建立连接后就称为一个全关联。

在这个全关联的套接口上可以双向的交换数据。

如果是使用无连接的通信则只需要建立一个半关联,在发送和接收时指明另一半的参数就可以了,所以可以说无连接的通信是将数据发送到另一台主机的指定端口。

此外不论是有连接还是无连接的通信都不需要双方的端口号相同。

Socket接口是访问Internet使用得最广泛的方法。

3.多线程编程

多线程[8]是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。

线程是在同一时间需要完成多项任务的时候被实现的。

使用线程的好处有以下几点:

  ·

使用线程可以把占据长时间的程序中的任务放到后台去处理

用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

程序的运行速度可能加快

在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。

在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

 多线程在JAVA里面的应用也是很广泛。

Java对多线程的支持是非常强大的,他屏蔽掉了许多的技术细节,让我们可以轻松的开发多线程的应用程序。

1.2.4开发平台

1.J2SE平台

Java2平台包括:

标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。

J2SE,J2ME和J2EE,这也就是SunONE(OpenNetEnvironment)体系。

J2SE就是Java2的标准版,主要用于桌面应用软件的编程;

J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;

J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

StandardEdition(标准版)J2SE包含那些构成Java语言核心的类。

比如:

数据库连接、接口定义、输入/输出、网络编程定位在客户端,主要用于桌面应用软件的编程。

J2SE包含那些构成Java语言核心的类。

比如:

数据库连接、接口定义、输入/输出、网络编程

2.MYSQL数据库

MYSQL[9]的特性MYSQL的特性包括:

Internet集成。

SQLServer2000数据库引擎提供完整的XML支持。

它还具有构成最大的Web站点的数据存储组件所需的可伸缩性、可用性和安全功能。

MYSQL程序设计模型与WindowsDNA构架集成,用以开发Web应用程序,并且MYSQL支持EnglishQuery和Microsoft搜索服务等功能,在Web应用程序中包含了用户友好的查询和强大的搜索功能。

可伸缩性和可用性。

同一个数据库引擎可以在不同的平台上使用,从运行MicrosoftWindows®

98的便携式电脑,到运行MYSQL数据中心版的大型多处理器服务器。

MYSQL企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大Web站点所需的性能级别。

企业级数据库功能。

MYSQL关系数据库引擎支持当今苛刻的数据处理环境所需的功能。

数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。

MYSQL分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是MYSQL数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。

复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。

可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。

易于安装、部署和使用。

MYSQL中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用SQLServer的过程。

MYSQL还支持基于标准的、与WindowsDNA集成的程序设计模型,使MYSQL数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。

这些功能使您得以快速交付MYSQL应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。

 

系统分析与设计

2.1需求分析

此次开发的网络聊天工具可作为个人的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。

本聊天工具由服务器端程序和客户端程序两部分组成,整体采用JAVA平台开发,并使用MYSQL管理数据库数据。

服务器是可以监听和查看用户的基本操作;

客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能:

本聊天需包含如下基本功能:

1.客户端:

(1)新用户注册;

(2)用户登录验证;

(3)获取好友列表并显示好友状态(在线/不在线);

(4)添加用户好友;

(5)删除用户好友;

(6)用户与好友聊天(可查看聊天记录);

(7)接收系统信息。

2.服务端:

(1)启动和关闭后台服务器;

(2)查看客户端登录的相关信息(客户端登陆时间/登陆IP);

(3)向所有在线用户发送系统消息。

2.2系统总体框架

2.2.1总体设计

网络即时通讯系统采用客户机/服务器(C/S)的模式来设计,是一个3层的C/S结构:

数据库服务器->

应用程序服务器端->

应用程序客户端。

系统采用C/S结构,可以将任务合理分配到客户机端和服务器端,从而降低了系统的通信开销,如图3.1所示:

图3.1C/S体系结构

1. 

客户层

客户层也叫应用层,是应用程序的用户接口部分。

给聊天工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。

它用于检查用户的输入数据,显示应用的输出数据。

为了使用户能直观地进行操作,客户层需要合作图形用户接口。

若聊天用户变更,系统只需要改写显示控制和数据检查程序即可,而不影响其他两层。

数据检查的内容限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。

2.服务层

服务层也叫功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。

例如,用户需要检索数据,系统设法将有关检索要求的信息一次性地传送给功能层;

而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。

在应用设计中,必须避免表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。

3.数据层

据层就是DBMS,本系统使用了Microsoft公司的SQLServer2000数据库服务器来管理数据。

MYSQL能迅速执行大量数据的更新和检索。

因此,从功能层传送到数据层的“要求”一般都使用SQL语言。

2.2.2功能模块

聊天工具按如下过程完成通信:

客户向服务器注册,告知服务器它在监听某主题;

客户注册之后,向服务器发送消息;

服务器再把消息发送给所有监听些主题的客户。

聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务,对设计来说,等于完成了一半。

根据聊天的通信步骤,系统的功能模块如图3.2所示:

即时消息系统

服务器端

客户端

后台操作

建立连接.

监听客户请求

用户登录消息

用户管理

好友管理

聊天功能

用户登录

用户注册

查找好友

添加好友

删除好友

发送消息

接收消息

聊天记录

数据库操作

发送系统消息

消息管理

图3.2功能模块

1.服务器端

服务器完成5大功能:

建立连接、监听客户请求、操作数据库、查看用户登录消息和发送系统消息这5大功能的具体含义如下:

建立连接:

系统启动时建立一个ServerSocket连接,绑定本地计算机的一个端口,不断侦听是否有客户端连接或者断开连接。

监听客户请求:

服务器端是一个信息的枢纽,所有客户端的信息都要传到服务器端,再由服务器根据要求分发出去,客户端在向服务器发送各种请求,如:

上线、隐身、获取我的好友、查找好友等等。

数据库操作:

当客户机向服务器发送请求时,服务器需要通过数据库管理软件对数据库的数据进行增、删和查询。

如录入用户信息、修改用户信息、查找好友数据库的资料以及添加好友数据到数据库等。

用户登录消息:

在服务器端的界面上,我们可以看到用户的登录消息,包括IP地址、端口号,登录时间等。

发送系统消息:

在客户端管理界面上,可以输入消息,并发送给所有的在线用户。

2.客户端

客户端完成3大功能:

用户管理、好友管理和聊天功能,这些功能的含义如下:

用户管理:

此功能又包括2个子功能,用户登录和用户注册。

客户端与服务器端建立通信通道,向服务器发送新建用户的信息,接收来自服务器听信息进行注册。

注册完毕后,可以通过系统的登录界面,输入账号和密码,然后发送到服务器进行验证。

如果验证通过,则打开程序的主界面。

好友管理:

此功能又包括3个子功能,查找好友、添加好友和删除好友。

在程序的主界面,提供查找好友的功能。

查找好友时,客户端向服务器发送查找好友请求,服务器端返回在线用户的信息,此时我们可以通过此来进行添加好友,并跟好友通过通信连接。

聊天功能:

客户端在与好友端建立通信连接后,便可以与好友进行聊天,聊天时发送的是文本信息,好友端在接收到聊天消息后,会提示收到消息,并由好友端自主打开消息接收界面。

所有的聊天消息都会被保存起来,可以查看与每个好友的聊天记录。

聊天记录包括内容和时间。

2.3系统详细设计

2.3.1多线程设计

1.服务器端的多线程

服务器需要和多个客户端同时进行通信,这就是服务器端的多线程。

一旦服务器发现一个新的客户端与之建立了连接,就马上新建一个线程与客户端进行通信。

用多线程的好处在于可以同时处理多个通信连接,不会出于由于数据排队而发生的延迟或者丢失,可以很好利用系统的性能。

服务器为每个连接着的客户建立一个线程,为了同时响应多个客户端,需设计一个主线程来启动服务器端的多线程。

主线程与进程结构类似,它在获得新连接时生成一个线程来处理这个这个连接。

线程调度速度快,占用资源少,可共享进程空间中的数据,因此服务器的响应速度较快,且I/O吞吐量较大。

在程序的代码里面,服务器端的多线程类定义为:

ClassServerThreadextendsThread{//略};

2.客户端的多线程

客户端能够完成信息的接收和发送操作,这与服务器的多线程概念不同,可以采用循环等待的方法来实现客户端。

利用循环等待的方式,客户端首先接收用户输入的内容并将它们发送到服务器端,然后接收来自服务器端的信息,将其返回给客户端的用户。

在程序的代码里面,客户端的多线程定义为:

classMainWinextendsJFrameimplementsRunnable{//略};

2.3.2数据库设计

数据库表主要用来存放用户的注册信息和用户的好友资料,可利用两张数据表用来存放用户信息和用户好友资料。

在MYSQL上新建名为javaicq的数据库,并建立两张数据库表:

用户的基本信息表(表名icq)和用户好友数据库表(表名friend).

1.icq表

icq表存放用户信息,信息。

利用MYSQL2000建立数据表,如表3.1所示:

表3.1用户信息表

字段

数据类型

说明

Ip

int

用户Ip

Id

char

用户的账号

name

用户的昵称

bit

用户ip

2.frind表

friend表的设计比较简单,本系统设计了用户的号码和好友的号码两个字段。

利用SQLServer2000建立如下数据表:

表3.2好友信息表

ip

id

好友的账号

2.3.3服务器的设计

1.主服务器类的设计

主服务器实现了服务器的多线程,服务器端有一个进程(或多个进程)在指定的端口等待客户的连接信息。

一时连接成功,就可以按设计的数据交换方法和格式进行数据传输。

客户端只在需要的时候向服务端发出连接请求。

主服务器类调用ServerThread类,而每个ServerThread实体就是一个单独的线程,即对应于客户端连接请求响应的线程。

它的执行过程如下:

使用ServerSockets=newServerSocket(8000)语句绑定8000端口创建套接口

使用Socket=s.accept()来监听用户的请求

使用newServerThread(socket)语句创建新的线程。

2.ServerThread类的设计

客户端发送连接请求的时候,服务器端创建一个ServerThread(socket)线程。

ServerThread

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1