《毕业设计(论文)-基于VC++的网络即时通信软件的设计与实现(40页).doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于VC++的网络即时通信软件的设计与实现(40页).doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-毕业设计(论文)-基于VC+的网络即时通信软件的设计与实现-第 35 页摘 要随着互联网技术的飞速发展基于网络的即时通信软件给我们带来诸多便利,也成为当今网络应用的主流。聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流。本文就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。本文首先针对网络即时通信系统的功能需求进行了分析,然后按照系统的功能需求对系统的体系结构进行了设计,并针对各个功能模块的执行流程进行了详细的分析。系统采用功能强大的VC+作为开发平台,以C/S模式作为开发模式,客户端实现了用户注册、用户登录、用户信息查询、个人信息修改、查
2、看在线人员、消息传送以及文件传输等功能,服务器端实现了服务启动停止、用户信息管理和数据消息处理等功能。在系统实现过程中,将客户端与服务器端的功能分别实现,着重研究如何运用Socket编程技术和TCP/IP协议来实现通信交流,并采用多线程实现不同的并行任务。本系统最终能够应用于网络环境,应用数据库对通信用户及通信消息等进行管理。关键词:网络即时通信系统;VC+;C/S模式;Socket编程AbstractWith the rapid development of Internet technology, the Chat Software of the instant messenger bas
3、ed on network brings many conveniences to us, also becomes the focus of network application in present. Chat is one of the most widespread instant messengers, may facilitate the people to carry on the online information exchange at anytime and anywhere. This project develops chat software, which inc
4、ludes the writing and file transfer and so on.Firstly, analysis of functional requirements for instant network messaging system, and then follow the systems functional requirements, system architecture design, and carried out a detailed analysis of the implementation process for each functional modu
5、le. System uses a powerful VC + + as a development platform, C / S model as a development model, the client achieve the user registration, user login, user information to view, personal information changes, messaging and file transfer and other functions, the server side to achieve the service start
6、 and stop the line to view the user information management and data messaging functions.In the process of system implementation, the client and server side function respectively, this paper studies how to use the Socket programming technology and TCP/IP protocol to realize communication, using multi
7、-threaded implementation different parallel tasks. This system eventually is used in a network environment, the application database to manage communications users and communication messages.Keywords:Instant network messaging system; VC+; C/S mode; Socket Programming目 录1绪 论11.1 课题的背景及意义11.2 课题的国内外研究
8、现状11.3 课题研究的主要内容21.4 论文的组织结构22网络即时通信软件开发的相关技术42.1 OSI七层网络模型42.2 网络传输协议42.2.1 TCP/IP协议42.2.2 TCP协议和UDP协议52.3 C/S编程模型62.4 Windows Sockets简介72.5 MFC Windows Socket类82.5.1 CAsyncSocket异步类82.5.2 CSocket类82.6 MFC多线程编程技术92.7 Access数据库103 网络即时通信软件开发的系统需求分析123.1 系统实现目标123.2 功能性需求描述124 网络即时通信软件开发的系统总体设计154.1
9、系统体系结构设计154.2 系统功能模块介绍164.3 功能模块调用关系175 网络即时通信软件开发的系统详细设计185.1 客户端的详细设计185.2 服务器的详细设计235.3 数据库设计256 网络即时通信软件开发的系统实现276.1 系统主框架的实现276.2 服务端功能模块的实现296.3 客户端功能模块的实现30结 论36致 谢37参考文献38附录A 英文原文40附录B 汉语翻译47附录C 源程序代码521 绪 论1.1 课题的背景及意义即时通信软件是互联网应用工具软件,它的出现使得即时通信变为可能。即时通信工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的
10、一部分,比如大家都很熟悉的腾讯QQ、MSN等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语言、视频的实时互通交流。作为重要的多媒体应用之一,网络即时通信的研究有很重要的意义。 随着我国改革开放的不断深入和经济的迅速发展,信息、时间、效益等现代化的观念已深入人心,加之近年来我国的突飞猛进的通信网建设,作为现代化的通信手段之一的网络即时通信越来越受到人们的重视。如果采用网络即时通信的形式召开会议,既达到了开会的目的,又不需将大量时间花在旅途上,节约了时间和资金。不仅如此,网络即时通信实时性、交互性好的特点,使它在远程教育、远程医疗等方面也大有用武之地。1.2 课题的国
11、内外研究现状即时通信,几乎是每一个上网用户都必备的联络工具。即时通信软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通信软件还集成了文件共享、语音聊天、网络会议等功能。目前有两种架构形式:一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件;另一种采用B/S架构,及浏览器/服务端形式,这种形式的即时通讯软件,接借助互联网为媒介、端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商。到目前为止,ICQ和MSN是国外比较流行的网络聊天工具。 ICQ是I Seek You(我找你)的缩写,中文名
12、称目前可以称之为“网络呼叫器”。让用户知道网络上的朋友目前有没有在线是这种软件的主要功能,然后用户可以和朋友互相发送消息和资源共享等。MSN是微软发行的一款比较好的聊天工具,它是和ICQ比较类似的网上即时通信工具,它通过最简单的方法给用户提供很好的的即时通信,使Microsoft Outlook Express(R) 和MSN Hotmail(R)更简单好用。MSN Messenger Service 还可使用户之间的通信变得相对轻松愉快。用户间可以进行单独的聊天,也可以在同一个对话窗口中与多个人进行聊天。用语音取代键盘输入,使用户可以和与世界各地的朋友进行交流,可以把所发的文本消息发送到联系
13、人的手机,也可以进入“聊天室”认识新的朋友。在中国大部分人都使用腾讯QQ进行网络通信。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具腾讯即时通信Tencent Instant Messenger,简称TIM或腾讯QQ。腾讯QQ经过三年时间的发展,到2012年,其用户群成为中国最大的互联网注册用户群,其中QQ用户活跃账户数达到7.117亿。自此腾讯QQ成为中国最大的即时通信服务提供商。腾讯QQ超过4.3亿的注册用户群体现了网络用户对腾讯QQ这一聊天工具的广泛应用。在当今市场经济高速发展的前提下,腾讯QQ也在不断自我完善,渐渐地演
14、变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊天用户带来越来越多的人性化服务:从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件。1.3 课题研究的主要内容现在,多渠道的信息源、网络化的数据分布、快捷医用的交互操作、智能化的分析决策等特点越来越成为衡量即时通信软件的关键,因此,本文对网络即时通信软件的开发过程进行了研究与分析,该软件基于C+语言运行于VC平台上,利用的技术主要是Socket通信,并使用配置文件来管理数据。为实现和方便客户端间通信,在客户端进行了人性化的界面设计,用户可以注册号码、登录界面,并具有发送消息和传输文件的功能。本文的主要工作包括如下
15、几方面:(1)针对网络即时通信系统的功能需求进行了分析,将本系统划分为服务器端和客户端两部分。(2)按照系统的功能需求对系统的体系结构进行了设计,并针对各个功能模块的执行流程进行了详细的分析。(3)采用功能强大的VC+作为开发平台,以C/S模式作为开发模式,客户端实现了用户注册、用户登录、用户信息查询、个人信息修改、在线人员查看、消息传送以及文件传输等功能,服务器端实现了服务启动停止、用户信息管理和数据消息传输等功能。1.4 论文的组织结构本文共设计了6章来详细阐述整个课题的实现过程,论文按如下方式组织:第1章对课题的研究背景及意义、研究现状、课题研究的主要内容与论文的组织结构进行了较深入的阐
16、述。第2章分析了网络即时通信软件开发的相关技术,包括WinSock编程技术、TCP/IP协议、多线程编程技术等。第3章对系统进行需求分析,对组成系统的功能模块进行划分,对每个模块将要实现的功能进行阐述和说明。第4章对系统进行总体设计,根据系统需求分析设计出适合的体系结构,并对系统的功能模块进行划分。第5章对系统进行详细设计,分别介绍了系统关键模块的实现流程和数据库设计。第6章对系统进行实现,分别介绍了服务器端和客户端的主要类及其成员函数的实现技术,以及服务器端和客户端各功能模块的实现。2 网络即时通信软件开发的相关技术2.1 OSI七层网络模型OSI网络模型是一个开放式系统互联的参考模型。通过
17、这个参考模型,用户可以非常直观地了解网络通信的基本过程和原理。用户从OSI网络模型可以很直观地看到,网络数据从发送方到达接收方的过程中,数据的流向以及经过的通信层和相应的通信协议。事实上在网络通信的发送端,其通信数据每到一个通信层,都会被该层协议在数据中添加一个包头数据。而在接收方恰好相反,数据通过每一层是都会被该层协议剥去相应的包头数据。用户也可以这样理解,即网络模型中的各层都是对等通信1。在OSI七层网络模型中,各个网络层都具有各自的功能,如表2.1所示。表2.1 各网络层的功能协议层名功能概述物理硬件层表示计算机网络中的物理设备。常见的有计算机网卡等数据链路层将传输数据进行压缩与加压缩网
18、络层将传输数据进行网络传输数据传输层进行信息的网络传输会话层建立物理网络的连接表示层将传输数据以某种格式进行表示应用层应用程序接口2.2 网络传输协议2.2.1 TCP/IP协议TCP/IP协议实际上是一个协议簇,其包括了很多协议。例如,FTP(文本传输协议)、SMTP(邮件传输协议)等应用层协议2。TCP/IP协议的网络模型只有4层,包括数据链路层、网络层、数据传输层和应用层,如图2.1所示3。在TCP/IP网络编程模型中,各层的功能如表2.2所示。应用层(各种应用层协议如TELNET,FTP,SMTP)运输层(TCP或是UDP)网络层IP数据链路层图2.1 TCP/IP网络协议模型表2.2
19、 TCP/IP网络协议各层功能协议层名功能概述数据链路层网卡等网络硬件设备以及驱动程序网络层IP协议等互联协议数据传输层为应用程序提供通信方法,通常为TCP、UDP协议应用层负责处理应用程序的实际用于层协议在数据传输层中,包括了TCP和UDP协议。其中,TCP协议是基于面向连接的可靠的通信协议。其具有重发机制,即当数据被破坏或者丢失时,发送方将重发该数据。而UDP协议是基于用户数据报协议,属于不可靠连接通信的协议4。例如,当用户使用UDP协议发送一条消息时,并不知道该消息是否已经到达接收方,或者在传输过程中数据已经丢失。但是在即时通信中,UDP协议在对一些对时间要求很高的网络数据传输方面有着重
20、要的作用5。2.2.2 TCP协议和UDP协议 IP协议只是单纯地负责将数据流分割成包,并依指定的IP地址通过网络传输到目的地,其需要配合不同的传输协议,如TCP协议(连接性与可信赖性)或UDP协议(非连接性和不可信赖性),以便提供发送端与接收端主机间的连接和传输6。TCP提供了一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个客户端)在彼此交换数据之前必须建立一个TCP连接。这一过程与打电话相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。端口号(Port)用于寻找(识别)发送端和接收端应用进程。UDP不提供可靠性,它只管把应用程序传给IP层的数
21、据发送过去,但是不保证它们能到达目的地7。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协议(如TCP),但UDP协议有简单、快速、占用资源少的优点8。2.3 C/S编程模型C/S(Client/Server,客户/服务器)模型,该模型可以合理利用两端硬件环境优势,将任务合理分配到客户端和服务器,降低系统通信开销9。C/S体系结构如图 2.2所示。图2.2 C/S体系结构在客户端/服务器体系结构(C/S)中,有一个总是打开的主机称为服务器,它服务于来自许多其它称为客户机的主机请求。客户端主机既可能有时打开,也可能总是打开。正如 Web 应用程序,其中总是打开的 Web 服务器服务于
22、运行在客户端主机上的浏览器请求。当 Web 服务器接收到来自客户端对某对象的请求时,它向该客户端发送所请求的对象以作为响应。注意到客户端/服务器体系结构中,客户端相互之间不直接通信。例如,在 Web 应用中两个浏览器并不直接通信。客户端/服务器体系结构的另外一个特征是该服务器具有固定的、周知的 IP 地址。因为该服务器具有固定的、周知的地址,并且总处于打开状态,所以客户端总能够通过向该服务器的地址发送分组来与其联系。这种体系结构的优点是:方便对资源的统一管理,因为资源都在服务器上;结构简单,所有客户端都以服务器为中心。但是其缺点也是很明显的:因为大量的客户端对服务器进行访问,会在很大程度上增加
23、服务器的负担,可能会造成服务器崩溃;容易出现单点故障,如果服务器崩溃,那么整个网络也就崩溃了。2.4 Windows Sockets简介Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口10。图2.3 Windows Sockets实现通讯工作的各层关系图Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口,应用程序调用Windows Sockets的API实现相互之间的通信。Windows
24、 Sockets又利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。Socket控件可以供Microsoft Acess、Visual Basic,Visual C+或Visual Foxpro的开发人员使用。Socket控件可以使用两种协议:TCP协议和UDP协议。Windows sockets无疑是我们进行网络编程的利器。所有的Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用Windows Sockets的API实现相互之间的通信。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通信工作。它们之间的关系如图2.3所示。
25、2.5 MFC Windows Socket类VC+在Windows下进行WinSock编程时,MFC对原来的Windows Sockets API库函数进行了一系列封装,继而产生了CAsyncSocket类和CSocke类,它们封装了有关Socket的各种功能11。2.5.1 CAsyncSocket异步类MFC提供了一个异步类CAsyncSockct,它封装了异步、非阻塞Socket的基本功能,用它做常用的网络通信软件很方便。它屏蔽了Socket的异步、非阻塞等概念,开发人员无需了解异步、非阻塞Socket的原理和工作机制。CAsyncSocket类的编程模型:(1)调用类的构造函数创建C
26、AsyncSocket对象。(2)调用Create()函数创建Socket句柄。(3)如果欲创建的套接字是客户端的,则调用函数Connect()向服务器套接字发送连接请求。如果是服务器端套接字,则调用函数Listen()开始侦听客户的连接请求;当收到连接请求后,调用函数Accept()接收该请求。(4)调用Send()等功能函数进行数据传输与处理。(5)关闭或销毁套接字对象。2.5.2 CSocket类CSocket类派生于CAsyncSocket类。该类不但具有CAsyncSocket类的基本功能,还具有串行化功能。用户在实际编程中,通过将CSocket类与CSocketFile类和CArc
27、hive类一起使用,能够很好地管理数据以及发送数据12。CSocket类编程模型:(1)分别构造服务器和客户套接字对象。(2)调用对象的Create()函数创建套接字,而Create()函数会调用Bind()函数将此套接字绑定到指定的地址。(3)套接字创建完毕后,服务器调用Listen()成员函数开始侦听客户的连接请求,而客户可以调用Connect()成员函数向服务器请求连接。(4)当服务器监听到客户连接请求时,创建一个新的套接字,并将其传送给Accept()成员函数以收到客户的连接请求,函数执行失败会返回特定的错误码。(5)为服务器和客户的套接字对象分别创建与之相联系的CSocketFile
28、类对象。(6)为服务器和客户的套接字对象分别创建一个与CSocketFile类相联系的CArchive类对象以进行数据的发送和接收。(7)使用CArchive类对象在客户端和服务器之间进行数据传输。(8)在任务执行完成后,关闭或销毁CSocket类、CSocketFile类和CArchive类的3个对象。2.6 MFC多线程编程技术MFC类库是一个很大的、扩展了的C+类层次结构,与传统上使用C语言直接访问Windows API相反,MFC已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用C编写的 Windows 程序所必需的,因此用MFC编写的程序要比用C语言编写的程序小得多,当然M
29、FC所编写的程序的性能也毫无损失13。必要时,也可以MFC可以用面向对象的方法来调用Windows API,因为MFC不修改也不隐藏Windows程序的基本结构。MFC是很庞大的。Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。Visual C+ 6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便14。CWinThread对象代表在一个应用程序内运行的线程。运行的主线程通常由CWinApp的派生类提供;CWinApp由CWinThread派生。另外,CWinThread对象允许给定的应用程序拥有多个线程。CWinThr
30、ead支持两种线程类型:工作者线程和用户界面线程。工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。用户界面线程具有收发消息的功能,并处理从系统收到的消息。CWinApp及其派生类是用户界面线程的例子。其它用户界面线程也可由CWinThread直接派生。CWinThread类的对象存在于线程的生存期。要使代码和MFC是完全线程安全的,CWinThread类是完全必要的。框架使用的用来维护与线程相关的信息的线程局部数据由CWinThread对象管理。由于依赖CWinThread来处理线程局部数据,任何使用MFC的线程必须由MFC创建。例如,由运行时函数_beginthr
31、eadex创建的线程不能使用任何MFC API。为了创建一个线程,调用AfxBeginThread函数。根据需要工作者线程还是用户界面线程,有两种调用AfxBeginThread的格式。如果需要用户界面线程,则将指向CWinThread派生类的CRuntimeClass的指针传递给AfxBeginThread。如果需要创建工作者线程,则将指向控制函数的指针和控制函数的参数传递给AfxBeginThread。对于工作者线程和用户界面线程,可以指定可选的参数来修改优先级,堆栈大小,创建标志和安全属性。AfxBeginThread线程将返回指向新的CWinThread对象的指针。与调用AfxBegi
32、nThread相反,可以构造一个CWinThread派生类的对象,然后调用CreateThread。如果需要在连续创建和终止线程的执行之间重复使用CWinThread对象,这种两步构造方法非常有用。创建线程也可以使用API函数:CreateThread函数完成。2.7 Access数据库Access是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方
33、便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务15。Access是一种关系型数据库管理系统,其主要特点如下:(1)存储方式单一:Access管理的对象有表、查询、窗体、报表、页。宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件中,便于用户的操作和管理。(2)面向对象:Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管
34、理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。 (3)界面友好、易操作:Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。 (4)集成环境、处理多种数据信息:Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可
35、以方便有序地进行。 (5)Access支持ODBC(开发数据库互连,Open Data Base Connectivity):利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。3 网络即时通信软件开发的系统需求分析需求分析在软件设计中扮演着决策者的角色,所以在所有设计中起着非常重要的作用。3.1 系统实现目标本即时通信
36、软件应该具有如下几个基本的功能:服务器端可以对所有客户端进行实时监控;客户端程序成功登录后,能够看到有那些用户在线,并能够与之通信;有新用户上线,能够及时地更新用户界面中的用户列表;用户之间能够实现文件传输的功能;双击用户列表后能够跳出对话框与在线用户进行即时通信。3.2 功能性需求描述网络即时通信软件的系统用例图如图3.1所示。图3.1 网络即时通信软件的系统用例图客户端在连接服务端之后,用户可以根据需要进行不同操作。客户端的主要功能包括:用户注册、用户登录、用户信息查询、个人信息修改、查看在线用户、消息传送以及文件传输等;服务器端的主要功能包括:服务启动停止、用户信息管理和数据消息处理。未
37、注册用户可以进行用户注册;已注册用户登录后可以进行消息传送、文件传输、用户信息查询以及修改个人信息等功能,如图3.1所示。(1)用户注册本软件提供用户注册功能。用户只有通过注册的方式才可以与其他注册的用户进行信息的交流。注册的信息最重要的就是用户的昵称以及密码,当然还包括其他个人资料信息。用户唯一的标志是服务器提供的用户号码,当且仅当用户提出注册请求的时候,服务器才根据数据库中的信息提供新的用户一个用户号码,用户通过号码和个人密码进行后续的登陆操作。(2)用户登录本软件提供用户登录功能。用户只有通过登录的方式才可以进入主界面获取用户列表,然后才可以进行信息的交流和其他操作。(3)用户信息查询本
38、软件提供用户信息查询功能。对于某个用户,客户端向服务器端发送查询该用户信息的请求,服务器操作数据库提取相关信息然后传送给客户端。客户端接收到用户信息后进行显示。(4)个人信息修改本软件提供个人信息修改功能。当用户需要修改自己资料的某一项时,比如自己的密码,自己的昵称等,用户将修改好的信息传送给服务器,服务器根据相关信息进行数据库的修改将该用户的资料更新。(5)查看在线用户用户可以通过刷新用户列表查看当前在线的所有用户。(6)消息传送消息发送是一个最基本的功能,即时通信最基础的要求就是要进行通讯信息的传送。具体表现为当一方客户需要向另一发客户发送消息的时候,只需要在用户列表中选择该用户,继而在弹
39、出的对话框中输入通信内容,点击发送按钮后该消息将通过服务器的中转转发到接收方的客户端并弹出消息聊天对话框进行显示。(7)文件传输文件传输也是基本的功能之一。登录成功后的双方用户为了某种要求需要进行文件的传输,显然文件传输应该是点对点的并且使用TCP连接才能保证文件传输的可靠性。一方用户A点击文件传输的选项继而选择要传输的文件名,此时在该用户实际已经建立起一个TCP监听套接字,在另一方的客户B将接收到对于文件传输的接收请求,同意或者拒绝接收文件。当客户B选择接收的时候即将调用connect()函数远程连接到客户A,然后进行文件的传输。(8)启动停止服务器用于服务器端的服务启动或者停止,用户在对话
40、框中点击启动服务按钮,服务器端各项功能启动,等待客户端连接;在对话框中点击退出按钮,服务器端停止服务并退出。(9)用户信息管理用户按需求选择用户注册、用户登录、用户信息查询、个人信息修改等功能,服务器端收到请求,连接数据库,完成对数据的操作,保存并关闭。(10)数据消息处理该功能是整个网络即时通信软件的核心。服务器应该可以协调多用户的请求服务,当用户的请求消息来临时能够通过开辟线程的方式来进行并行处理,服务器对客户的应答应该时快速的,对用户来说不应该感觉到有延迟。4 网络即时通信软件开发的系统总体设计系统总体设计是对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。系统总体
41、设计的主要任务是把需求分析得到的模型转换为软件结构和数据结构。本章将系统的设计思想和基本结构进行总体说明,对功能进行总体介绍,并对每个功能模块的使用和处理进行描述。4.1 系统体系结构设计本设计采用模块化原理,使软件结构清晰,容易设计而且易于阅读和理解。图4.1 客户端的总体功能模块图图4.2 服务器端的总体功能模块图经过了对系统的可行性分析、需求分析和数据分析之后,根据用户的需求,考虑系统的实际情况,按照模块设计原则,得出客户端和服务器端的总体功能模块如图4.1和图4.2所示。4.2 系统功能模块介绍整个系统分为客户端和服务器,采取典型的C/S模式。客户端分为7个模块,主要包括:用户注册模块
42、、用户登录模块、用户信息查询模块、个人信息修改模块、查看在线人员模块、消息传送模块、文件传输模块。服务器端的功能模块主要包括:服务启动停止模块、用户信息管理模块和数据消息传送模块。(1)用户注册:由用户输入用户名、密码、昵称等基本信息,由系统检测信息是否有效并加以存储。(2)用户登录:用户在对应的编辑框中输入相应的注册名密码信息,由系统查询数据库中的用户信息表并核对,正确后登录。(3)用户信息查询:用户双击想要查询信息的用户,点击查询按钮,由系统查询数据库中的用户信息表并显示。(4)个人信息修改:用户点击个人信息修改按钮,在对应的编辑框中输入修改的密码、昵称等基本信息,由系统检测信息是否有效并
43、加以存储。(5)查看在线用户:用户登录成功之后,刷新列表可以在对话框中显示当前在线的所有用户昵称。(6)消息发送:用户双击想要发送消息的用户,在弹出的对话框中输入想要发送的消息,消息通过系统发送给目标用户。(7)文件传输:用户双击想要传输文件的用户,选择文件传输按钮,选择要发送的文件。目标用户选择接收文件。文件通过系统传输给目标用户。服务器端分为3个功能模块,主要包括:服务启动停止模块、用户信息管理模块和数据消息处理模块。(1)服务启动停止:用户运行服务器端后,可以在服务器端上进行操作,点击启动服务按钮,服务器端开启服务,进行监听并响应。点击停止服务按钮,服务器端停止运行。(2)用户信息管理:
44、服务器端接收客户端传来的信息,并根据信息对数据库进行操作。(3)数据消息处理:客户端之间通过服务器端建立连接,并进行数据消息的传送。4.3 功能模块调用关系服务器端的用户信息管理模块用于进行数据库的查询、修改、插入、删除操作,客户端的用户注册、用户登录、个人信息修改、查询用户信息、查看在线人员等模块都需要利用该模块与数据库进行交互。图4.3 功能模块调用关系图服务器端的数据消息处理模块用于处理与网络通信相关的内容,客户端的消息传送模块、文件传输模块之间通过服务器端的数据消息处理模块进行交互,系统模块之间的调用关系如图4.3所示。5 网络即时通信软件开发的系统详细设计系统详细设计是对系统各个具体
45、模块的设计,也就是设计系统各个模块的实现方案。本章将对用户注册、用户登录、消息发送、文件传输、用户信息查询、个人信息修改、查看在线用户、启动停止服务、用户信息管理、数据消息处理等模块的具体实现流程进行描述。5.1 客户端的详细设计(1)用户注册模块的详细设计通过服务器端的用户信息管理模块来实现用户注册功能。用户只有通过注册的方式才可以在登录后与其他注册的在线用户进行信息的交流。注册的信息最重要的就是用户的昵称以及密码,当然还包括其他个人资料信息。用户唯一的标志是服务器提供的用户号码,当且仅当用户提出注册请求的时候,服务器才根据数据库中的信息提供新的用户一个用户号码,用户通过号码和个人密码进行后
46、续的登录操作。用户注册模块流程图如图5.1所示。首先用户填写注册信息,密码、昵称、年龄、地区等。确认注册,通过对注册信息的审核,如果没通过审核,提示用户修改信息,通过审核则注册成功。图5.1 用户注册模块流程图(2)用户登录模块的详细设计通过服务器端的用户信息管理模块来实现用户登录功能。用户只有通过登录的方式才可以进行信息的交流和其他操作。用户的登录操作会在服务器进行相关的记录,服务器可以随时查询在线用户的信息。用户登录模块流程图如图5.2所示。首先用户输入用户名和密码,系统判断用户名密码是否为空,为空提示用户重新输入,不为空则通过用户信息管理模块在数据库中查找该用户名是否存在。不存在则提示用
47、户重新输入,存在则验证密码是否正确。不正确则提示用户重新输入,正确则登录成功。图5.2 用户登录模块流程图(3)用户信息查询模块的详细设计通过服务器端的用户信息管理模块来实现用户信息查询的功能。对于某个用户,客户端向服务器发送查询该用户信息的请求,服务器操作数据库提取相关信息然后传送给客户端。客户端接收到用户信息后进行显示。用户信息查询模块流程图如图5.3所示。首先连接服务器端,发送查询用户信息请求。然后服务器端的用户信息管理模块对数据库进行查询,如果存在则将该用户的注册信息显示出来。图5.3 用户信息查询模块流程图图5.4 个人信息修改模块流程图(4)个人信息修改模块的详细设计当用户需要修改自己资料的某一项时,比如自己的密码,自己的昵称等,用户将修改好的信息传送给服务器,服务器根据相关信息进行数据库的修改将该用户的资料更新。个人信息修改模块流程图如图5.4所示。首先向服务器端发送个人信息修改请求。然后服务器端用户信息管理模块对数据库进行操作,输入要修改的信息,判断是否符合要求。不符合则提示用户重新输入,符合要求则更新数据库文件。(5)查看在线用户模块的详细设计通过查看在