搜档网
当前位置:搜档网 › 基于VC++的网络即时通信软件的设计与实现

基于VC++的网络即时通信软件的设计与实现

理工大学学士学位论文

摘要

随着互联网技术的飞速发展基于网络的即时通信软件给我们带来诸多便利,也成为当今网络应用的主流。聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流。本文就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。

本文首先针对网络即时通信系统的功能需求进行了分析,然后按照系统的功能需求对系统的体系结构进行了设计,并针对各个功能模块的执行流程进行了详细的分析。系统采用功能强大的VC++作为开发平台,以C/S模式作为开发模式,客户端实现了用户注册、用户登录、用户信息查询、个人信息修改、查看在线人员、消息传送以及文件传输等功能,服务器端实现了服务启动停止、用户信息管理和数据消息处理等功能。

在系统实现过程中,将客户端与服务器端的功能分别实现,着重研究如何运用Socket编程技术和TCP/IP协议来实现通信交流,并采用多线程实现不同的并行任务。本系统最终能够应用于网络环境,应用数据库对通信用户及通信消息等进行管理。

关键词:网络即时通信系统;VC++;C/S模式;Socket编程

Abstract

With the rapid development of Internet technology, the Chat Software of the instant messenger based 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 includes the writing and file transfer and so on.

Firstly, analysis of functional requirements for instant network messaging system, and then follow the system's functional requirements, system architecture design, and carried out a detailed analysis of the implementation process for each functional module. 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 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-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绪论 (1)

1.1 课题的背景及意义 (1)

1.2 课题的国内外研究现状 (1)

1.3 课题研究的主要内容 (2)

1.4 论文的组织结构 (2)

2网络即时通信软件开发的相关技术 (4)

2.1 OSI七层网络模型 (4)

2.2 网络传输协议 (4)

2.2.1 TCP/IP协议 (4)

2.2.2 TCP协议和UDP协议 (5)

2.3 C/S编程模型 (6)

2.4 Windows Sockets简介 (7)

2.5 MFC Windows Socket类 (8)

2.5.1 CAsyncSocket异步类 (8)

2.5.2 CSocket类 (8)

2.6 MFC多线程编程技术 (9)

2.7 Access数据库 (10)

3 网络即时通信软件开发的系统需求分析 (12)

3.1 系统实现目标 (12)

3.2 功能性需求描述 (12)

4 网络即时通信软件开发的系统总体设计 (15)

4.1 系统体系结构设计 (15)

4.2 系统功能模块介绍 (16)

4.3 功能模块调用关系 (17)

5 网络即时通信软件开发的系统详细设计 (18)

5.1 客户端的详细设计 (18)

5.2 服务器的详细设计 (23)

5.3 数据库设计 (25)

6 网络即时通信软件开发的系统实现 (27)

6.1 系统主框架的实现 (27)

6.2 服务端功能模块的实现 (29)

6.3 客户端功能模块的实现 (30)

结论 (36)

致谢 (37)

参考文献 (38)

附录A 英文原文 (40)

附录B 汉语翻译 (47)

附录C 源程序代码 (52)

1绪论

1.1 课题的背景及意义

即时通信软件是互联网应用工具软件,它的出现使得即时通信变为可能。即时通信工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分,比如大家都很熟悉的腾讯QQ、MSN等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语言、视频的实时互通交流。

作为重要的多媒体应用之一,网络即时通信的研究有很重要的意义。

随着我国改革开放的不断深入和经济的迅速发展,信息、时间、效益等现代化的观念已深入人心,加之近年来我国的突飞猛进的通信网建设,作为现代化的通信手段之一的网络即时通信越来越受到人们的重视。如果采用网络即时通信的形式召开会议,既达到了开会的目的,又不需将大量时间花在旅途上,节约了时间和资金。不仅如此,网络即时通信实时性、交互性好的特点,使它在远程教育、远程医疗等方面也大有用武之地。

1.2 课题的国内外研究现状

即时通信,几乎是每一个上网用户都必备的联络工具。即时通信软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通信软件还集成了文件共享、语音聊天、网络会议等功能。目前有两种架构形式:一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件;另一种采用B/S架构,及浏览器/服务端形式,这种形式的即时通讯软件,接借助互联网为媒介、端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商。

到目前为止,ICQ和MSN是国外比较流行的网络聊天工具。ICQ是I Seek You(我找你)的缩写,中文名称目前可以称之为“网络呼叫器”。让用户知道网络上的朋友目前有没有在线是这种软件的主要功能,然后用户可以和朋友互相发送消息和资源共享等。

MSN是微软发行的一款比较好的聊天工具,它是和ICQ比较类似的网上即时通信工具,它通过最简单的方法给用户提供很好的的即时通信,使Microsoft Outlook Express(R) 和MSN Hotmail(R)更简单好用。MSN Messenger Service 还可使用户之间的通信变得相对轻松愉快。用户间可以进行单独的聊天,也可以在同一个对话窗口中与多

个人进行聊天。用语音取代键盘输入,使用户可以和与世界各地的朋友进行交流,可以把所发的文本消息发送到联系人的手机,也可以进入“聊天室”认识新的朋友。

在中国大部分人都使用腾讯QQ进行网络通信。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具——腾讯即时通信Tencent Instant Messenger,简称TIM或腾讯QQ。腾讯QQ经过三年时间的发展,到2012年,其用户群成为中国最大的互联网注册用户群,其中QQ用户活跃账户数达到7.117亿。自此腾讯QQ成为中国最大的即时通信服务提供商。腾讯QQ超过4.3亿的注册用户群体现了网络用户对腾讯QQ这一聊天工具的广泛应用。在当今市场经济高速发展的前提下,腾讯QQ也在不断自我完善,渐渐地演变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊天用户带来越来越多的人性化服务:从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件。

1.3 课题研究的主要内容

现在,多渠道的信息源、网络化的数据分布、快捷医用的交互操作、智能化的分析决策等特点越来越成为衡量即时通信软件的关键,因此,本文对网络即时通信软件的开发过程进行了研究与分析,该软件基于C++语言运行于VC平台上,利用的技术主要是Socket通信,并使用配置文件来管理数据。为实现和方便客户端间通信,在客户端进行了人性化的界面设计,用户可以注册号码、登录界面,并具有发送消息和传输文件的功能。

本文的主要工作包括如下几方面:

(1)针对网络即时通信系统的功能需求进行了分析,将本系统划分为服务器端和客户端两部分。

(2)按照系统的功能需求对系统的体系结构进行了设计,并针对各个功能模块的执行流程进行了详细的分析。

(3)采用功能强大的VC++作为开发平台,以C/S模式作为开发模式,客户端实现了用户注册、用户登录、用户信息查询、个人信息修改、在线人员查看、消息传送以及文件传输等功能,服务器端实现了服务启动停止、用户信息管理和数据消息传输等功能。

1.4 论文的组织结构

本文共设计了6章来详细阐述整个课题的实现过程,论文按如下方式组织:

第1章对课题的研究背景及意义、研究现状、课题研究的主要内容与论文的组织结构进行了较深入的阐述。

第2章分析了网络即时通信软件开发的相关技术,包括WinSock编程技术、TCP/IP 协议、多线程编程技术等。

第3章对系统进行需求分析,对组成系统的功能模块进行划分,对每个模块将要实现的功能进行阐述和说明。

第4章对系统进行总体设计,根据系统需求分析设计出适合的体系结构,并对系统的功能模块进行划分。

第5章对系统进行详细设计,分别介绍了系统关键模块的实现流程和数据库设计。

第6章对系统进行实现,分别介绍了服务器端和客户端的主要类及其成员函数的实现技术,以及服务器端和客户端各功能模块的实现。

2网络即时通信软件开发的相关技术

2.1 OSI七层网络模型

OSI网络模型是一个开放式系统互联的参考模型。通过这个参考模型,用户可以非常直观地了解网络通信的基本过程和原理。

用户从OSI网络模型可以很直观地看到,网络数据从发送方到达接收方的过程中,数据的流向以及经过的通信层和相应的通信协议。事实上在网络通信的发送端,其通信数据每到一个通信层,都会被该层协议在数据中添加一个包头数据。而在接收方恰好相反,数据通过每一层是都会被该层协议剥去相应的包头数据。用户也可以这样理解,即网络模型中的各层都是对等通信[1]。在OSI七层网络模型中,各个网络层都具有各自的功能,如表2.1所示。

表2.1 各网络层的功能

协议层名功能概述

物理硬件层表示计算机网络中的物理设备。常见的有计算机网卡等

数据链路层将传输数据进行压缩与加压缩

网络层将传输数据进行网络传输

数据传输层进行信息的网络传输

会话层建立物理网络的连接

表示层将传输数据以某种格式进行表示

应用层应用程序接口

2.2 网络传输协议

2.2.1 TCP/IP协议

TCP/IP协议实际上是一个协议簇,其包括了很多协议。例如,FTP(文本传输协议)、SMTP(邮件传输协议)等应用层协议[2]。TCP/IP协议的网络模型只有4层,包括数据链路层、网络层、数据传输层和应用层,如图2.1所示[3]。

在TCP/IP网络编程模型中,各层的功能如表2.2所示。

图2.1TCP/IP网络协议模型

表2.2TCP/IP网络协议各层功能

协议层名功能概述

数据链路层网卡等网络硬件设备以及驱动程序

网络层IP协议等互联协议

数据传输层为应用程序提供通信方法,通常为TCP、UDP协议

应用层负责处理应用程序的实际用于层协议

在数据传输层中,包括了TCP和UDP协议。其中,TCP协议是基于面向连接的可靠的通信协议。其具有重发机制,即当数据被破坏或者丢失时,发送方将重发该数据。而UDP协议是基于用户数据报协议,属于不可靠连接通信的协议[4]。例如,当用户使用UDP协议发送一条消息时,并不知道该消息是否已经到达接收方,或者在传输过程中数据已经丢失。但是在即时通信中,UDP协议在对一些对时间要求很高的网络数据传输方面有着重要的作用[5]。

2.2.2 TCP协议和UDP协议

IP协议只是单纯地负责将数据流分割成包,并依指定的IP地址通过网络传输到目的地,其需要配合不同的传输协议,如TCP协议(连接性与可信赖性)或UDP协议(非连接性和不可信赖性),以便提供发送端与接收端主机间的连接和传输[6]。

TCP提供了一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP 的应用(通常是一个客户和一个客户端)在彼此交换数据之前必须建立一个TCP连接。这一过程与打电话相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。端口号(Port)用于寻找(识别)发送端和接收端应用进程。

UDP不提供可靠性,它只管把应用程序传给IP层的数据发送过去,但是不保证它们能到达目的地[7]。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协

议(如TCP),但UDP协议有简单、快速、占用资源少的优点[8]。

2.3 C/S编程模型

C/S(Client/Server,客户/服务器)模型,该模型可以合理利用两端硬件环境优势,将任务合理分配到客户端和服务器,降低系统通信开销[9]。C/S体系结构如图 2.2所示。

图2.2C/S体系结构

在客户端/服务器体系结构(C/S)中,有一个总是打开的主机称为服务器,它服务于来自许多其它称为客户机的主机请求。客户端主机既可能有时打开,也可能总是打开。正如Web 应用程序,其中总是打开的Web 服务器服务于运行在客户端主机上的浏览器请求。当Web 服务器接收到来自客户端对某对象的请求时,它向该客户端发送所请求的对象以作为响应。注意到客户端/服务器体系结构中,客户端相互之间不直接通信。例如,在Web 应用中两个浏览器并不直接通信。客户端/服务器体系结构的另外一个特征是该服务器具有固定的、周知的IP 地址。因为该服务器具有固定的、周知的地址,并且总处于打开状态,所以客户端总能够通过向该服务器的地址发送分组来与其联系。

这种体系结构的优点是:方便对资源的统一管理,因为资源都在服务器上;结构简单,所有客户端都以服务器为中心。

但是其缺点也是很明显的:因为大量的客户端对服务器进行访问,会在很大程度上增加服务器的负担,可能会造成服务器崩溃;容易出现单点故障,如果服务器崩溃,那么整个网络也就崩溃了。

2.4Windows Sockets简介

Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口[10]。

图2.3Windows Sockets实现通讯工作的各层关系图

Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口,应用程序调用Windows Sockets的API实现相互之间的通信。Windows Sockets又利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。Socket 控件可以供Microsoft Acess、Visual Basic,Visual C++或Visual Foxpro的开发人员使用。Socket控件可以使用两种协议:TCP协议和UDP协议。Windows sockets无疑是我们进行网络编程的利器。所有的Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用Windows Sockets的API实现相互之间的通信。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通信工作。它们之间的关系如图2.3所示。

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)调用类的构造函数创建CAsyncSocket对象。

(2)调用Create()函数创建Socket句柄。

(3)如果欲创建的套接字是客户端的,则调用函数Connect()向服务器套接字发送连接请求。如果是服务器端套接字,则调用函数Listen()开始侦听客户的连接请求;当收到连接请求后,调用函数Accept()接收该请求。

(4)调用Send()等功能函数进行数据传输与处理。

(5)关闭或销毁套接字对象。

2.5.2 CSocket类

CSocket类派生于CAsyncSocket类。该类不但具有CAsyncSocket类的基本功能,还具有串行化功能。用户在实际编程中,通过将CSocket类与CSocketFile类和CArchive 类一起使用,能够很好地管理数据以及发送数据[12]。

CSocket类编程模型:

(1)分别构造服务器和客户套接字对象。

(2)调用对象的Create()函数创建套接字,而Create()函数会调用Bind()函数将此套接字绑定到指定的地址。

(3)套接字创建完毕后,服务器调用Listen()成员函数开始侦听客户的连接请求,而客户可以调用Connect()成员函数向服务器请求连接。

(4)当服务器监听到客户连接请求时,创建一个新的套接字,并将其传送给Accept()成员函数以收到客户的连接请求,函数执行失败会返回特定的错误码。

(5)为服务器和客户的套接字对象分别创建与之相联系的CSocketFile类对象。

(6)为服务器和客户的套接字对象分别创建一个与CSocketFile类相联系的CArchive类对象以进行数据的发送和接收。

(7)使用CArchive类对象在客户端和服务器之间进行数据传输。

(8)在任务执行完成后,关闭或销毁CSocket类、CSocketFile类和CArchive类的

3个对象。

2.6 MFC多线程编程技术

MFC类库是一个很大的、扩展了的C++类层次结构,与传统上使用C语言直接访问Windows API相反,MFC已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用C编写的Windows 程序所必需的,因此用MFC编写的程序要比用C语言编写的程序小得多,当然MFC所编写的程序的性能也毫无损失[13]。必要时,也可以MFC可以用面向对象的方法来调用Windows API,因为MFC不修改也不隐藏Windows 程序的基本结构。MFC是很庞大的。

Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。Visual C++ 6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便[14]。

CWinThread对象代表在一个应用程序内运行的线程。运行的主线程通常由CWinApp的派生类提供;CWinApp由CWinThread派生。另外,CWinThread对象允许给定的应用程序拥有多个线程。

CWinThread支持两种线程类型:工作者线程和用户界面线程。工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。用户界面线程具有收发消息的功能,并处理从系统收到的消息。CWinApp及其派生类是用户界面线程的例子。其它用户界面线程也可由CWinThread直接派生。CWinThread类的对象存在于线程的生存期。

要使代码和MFC是完全线程安全的,CWinThread类是完全必要的。框架使用的用来维护与线程相关的信息的线程局部数据由CWinThread对象管理。由于依赖CWinThread来处理线程局部数据,任何使用MFC的线程必须由MFC创建。例如,由运行时函数_beginthreadex创建的线程不能使用任何MFC API。为了创建一个线程,调用AfxBeginThread函数。

根据需要工作者线程还是用户界面线程,有两种调用AfxBeginThread的格式。如果

需要用户界面线程,则将指向CWinThread派生类的CRuntimeClass的指针传递给AfxBeginThread。如果需要创建工作者线程,则将指向控制函数的指针和控制函数的参数传递给AfxBeginThread。对于工作者线程和用户界面线程,可以指定可选的参数来修改优先级,堆栈大小,创建标志和安全属性。AfxBeginThread线程将返回指向新的CWinThread对象的指针。

与调用AfxBeginThread相反,可以构造一个CWinThread派生类的对象,然后调用CreateThread。如果需要在连续创建和终止线程的执行之间重复使用CWinThread对象,这种两步构造方法非常有用。创建线程也可以使用API函数:CreateThread函数完成。

2.7 Access数据库

Access是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务[15]。Access是一种关系型数据库管理系统,其主要特点如下:

(1)存储方式单一:Access管理的对象有表、查询、窗体、报表、页。宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件中,便于用户的操作和管理。

(2)面向对象:Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。

(3)界面友好、易操作:Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。

(4)集成环境、处理多种数据信息:Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得

建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。

(5)Access支持ODBC(开发数据库互连,Open Data Base Connectivity):利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。

3 网络即时通信软件开发的系统需求分析

需求分析在软件设计中扮演着决策者的角色,所以在所有设计中起着非常重要的作用。

3.1 系统实现目标

本即时通信软件应该具有如下几个基本的功能:服务器端可以对所有客户端进行实时监控;客户端程序成功登录后,能够看到有那些用户在线,并能够与之通信;有新用户上线,能够及时地更新用户界面中的用户列表;用户之间能够实现文件传输的功能;双击用户列表后能够跳出对话框与在线用户进行即时通信。

3.2 功能性需求描述

网络即时通信软件的系统用例图如图3.1所示。

图3.1 网络即时通信软件的系统用例图

客户端在连接服务端之后,用户可以根据需要进行不同操作。客户端的主要功能包括:用户注册、用户登录、用户信息查询、个人信息修改、查看在线用户、消息传送以及文件传输等;服务器端的主要功能包括:服务启动停止、用户信息管理和数据消息处理。

未注册用户可以进行用户注册;已注册用户登录后可以进行消息传送、文件传输、用户信息查询以及修改个人信息等功能,如图3.1所示。

(1)用户注册

本软件提供用户注册功能。用户只有通过注册的方式才可以与其他注册的用户进行信息的交流。注册的信息最重要的就是用户的昵称以及密码,当然还包括其他个人资料信息。用户唯一的标志是服务器提供的用户号码,当且仅当用户提出注册请求的时候,服务器才根据数据库中的信息提供新的用户一个用户号码,用户通过号码和个人密码进行后续的登陆操作。

(2)用户登录

本软件提供用户登录功能。用户只有通过登录的方式才可以进入主界面获取用户列表,然后才可以进行信息的交流和其他操作。

(3)用户信息查询

本软件提供用户信息查询功能。对于某个用户,客户端向服务器端发送查询该用户信息的请求,服务器操作数据库提取相关信息然后传送给客户端。客户端接收到用户信息后进行显示。

(4)个人信息修改

本软件提供个人信息修改功能。当用户需要修改自己资料的某一项时,比如自己的密码,自己的昵称等,用户将修改好的信息传送给服务器,服务器根据相关信息进行数据库的修改将该用户的资料更新。

(5)查看在线用户

用户可以通过刷新用户列表查看当前在线的所有用户。

(6)消息传送

消息发送是一个最基本的功能,即时通信最基础的要求就是要进行通讯信息的传送。具体表现为当一方客户需要向另一发客户发送消息的时候,只需要在用户列表中选择该用户,继而在弹出的对话框中输入通信内容,点击发送按钮后该消息将通过服务器的中转转发到接收方的客户端并弹出消息聊天对话框进行显示。

(7)文件传输

文件传输也是基本的功能之一。登录成功后的双方用户为了某种要求需要进行文件的传输,显然文件传输应该是点对点的并且使用TCP连接才能保证文件传输的可靠性。一方用户A点击文件传输的选项继而选择要传输的文件名,此时在该用户实际已经建立起一个TCP监听套接字,在另一方的客户B将接收到对于文件传输的接收请求,同意或者拒绝接收文件。当客户B选择接收的时候即将调用connect()函数远程连接到客户A,然后进行文件的传输。

(8)启动停止服务器

用于服务器端的服务启动或者停止,用户在对话框中点击启动服务按钮,服务器端各项功能启动,等待客户端连接;在对话框中点击退出按钮,服务器端停止服务并退出。

(9)用户信息管理

用户按需求选择用户注册、用户登录、用户信息查询、个人信息修改等功能,服务器端收到请求,连接数据库,完成对数据的操作,保存并关闭。

(10)数据消息处理

该功能是整个网络即时通信软件的核心。服务器应该可以协调多用户的请求服务,当用户的请求消息来临时能够通过开辟线程的方式来进行并行处理,服务器对客户的应答应该时快速的,对用户来说不应该感觉到有延迟。

4 网络即时通信软件开发的系统总体设计

系统总体设计是对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。系统总体设计的主要任务是把需求分析得到的模型转换为软件结构和数据结构。本章将系统的设计思想和基本结构进行总体说明,对功能进行总体介绍,并对每个功能模块的使用和处理进行描述。

4.1 系统体系结构设计

本设计采用模块化原理,使软件结构清晰,容易设计而且易于阅读和理解。

图4.1 客户端的总体功能模块图

图4.2 服务器端的总体功能模块图

经过了对系统的可行性分析、需求分析和数据分析之后,根据用户的需求,考虑系统的实际情况,按照模块设计原则,得出客户端和服务器端的总体功能模块如图4.1和

图4.2所示。

4.2 系统功能模块介绍

整个系统分为客户端和服务器,采取典型的C/S模式。

客户端分为7个模块,主要包括:用户注册模块、用户登录模块、用户信息查询模块、个人信息修改模块、查看在线人员模块、消息传送模块、文件传输模块。服务器端的功能模块主要包括:服务启动停止模块、用户信息管理模块和数据消息传送模块。

(1)用户注册:由用户输入用户名、密码、昵称等基本信息,由系统检测信息是否有效并加以存储。

(2)用户登录:用户在对应的编辑框中输入相应的注册名密码信息,由系统查询数据库中的用户信息表并核对,正确后登录。

(3)用户信息查询:用户双击想要查询信息的用户,点击查询按钮,由系统查询数据库中的用户信息表并显示。

(4)个人信息修改:用户点击个人信息修改按钮,在对应的编辑框中输入修改的密码、昵称等基本信息,由系统检测信息是否有效并加以存储。

(5)查看在线用户:用户登录成功之后,刷新列表可以在对话框中显示当前在线的所有用户昵称。

(6)消息发送:用户双击想要发送消息的用户,在弹出的对话框中输入想要发送的消息,消息通过系统发送给目标用户。

(7)文件传输:用户双击想要传输文件的用户,选择文件传输按钮,选择要发送的文件。目标用户选择接收文件。文件通过系统传输给目标用户。

服务器端分为3个功能模块,主要包括:服务启动停止模块、用户信息管理模块和数据消息处理模块。

(1)服务启动停止:用户运行服务器端后,可以在服务器端上进行操作,点击启动服务按钮,服务器端开启服务,进行监听并响应。点击停止服务按钮,服务器端停止运行。

(2)用户信息管理:服务器端接收客户端传来的信息,并根据信息对数据库进行操作。

(3)数据消息处理:客户端之间通过服务器端建立连接,并进行数据消息的传送。

相关主题