基于VC 的网络即时通信软件的设计与实现_第1页
基于VC 的网络即时通信软件的设计与实现_第2页
基于VC 的网络即时通信软件的设计与实现_第3页
基于VC 的网络即时通信软件的设计与实现_第4页
基于VC 的网络即时通信软件的设计与实现_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着互联网技术的飞速发展基于网络的即时通信软件给我们带来诸多便利,也成为当今网络应用的主流。聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流。本文就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。本文首先针对网络即时通信系统的功能需求进行了分析,然后按照系统的功能需求对系统的体系结构进行了设计,并针对各个功能模块的执行流程进行了详细的分析。系统采用功能强大的VC++作为开发平台,以C/S模式作为开发模式,客户端实现了用户注册、用户登录、用户信息查询、个人信息修改、查看在线人员、消息传送以及文件传输等功能,服务器端实现了服务启动停止、用户信息管理和数据消息处理等功能。在系统实现过程中,将客户端与服务器端的功能分别实现,着重研究如何运用Socket编程技术和TCP/IP协议来实现通信交流,并采用多线程实现不同的并行任务。本系统最终能够应用于网络环境,应用数据库对通信用户及通信消息等进行管理。关键词:网络即时通信系统;VC++;C/S模式;Socket编程AbstractWiththerapiddevelopmentofInternettechnology,theChatSoftwareoftheinstantmessengerbasedonnetworkbringsmanyconveniencestous,alsobecomesthefocusofnetworkapplicationinpresent.Chatisoneofthemostwidespreadinstantmessengers,mayfacilitatethepeopletocarryontheonlineinformationexchangeatanytimeandanywhere.Thisprojectdevelopschatsoftware,whichincludesthewritingandfiletransferandsoon.Firstly,analysisoffunctionalrequirementsforinstantnetworkmessagingsystem,andthenfollowthesystem'sfunctionalrequirements,systemarchitecturedesign,andcarriedoutadetailedanalysisoftheimplementationprocessforeachfunctionalmodule.SystemusesapowerfulVC++asadevelopmentplatform,C/Smodelasadevelopmentmodel,theclientachievetheuserregistration,userlogin,userinformationtoview,personalinformationchanges,messagingandfiletransferandotherfunctions,theserversidetoachievetheservicestartandstopthelinetoviewtheuserinformationmanagementanddatamessagingfunctions.Intheprocessofsystemimplementation,theclientandserversidefunctionrespectively,thispaperstudieshowtousetheSocketprogrammingtechnologyandTCP/IPprotocoltorealizecommunication,usingmulti-threadedimplementationdifferentparalleltasks.Thissystemeventuallyisusedinanetworkenvironment,theapplicationdatabasetomanagecommunicationsusersandcommunicationmessages.Keywords:Instantnetworkmessagingsystem;VC++;C/Smode;SocketProgramming目录1绪论...................................................................................................................................11.1课题的背景及意义.......................................................................................................11.2课题的国内外研究现状...............................................................................................11.3课题研究的主要内容...................................................................................................21.4论文的组织结构...........................................................................................................22网络即时通信软件开发的相关技术.................................................................................42.1OSI七层网络模型........................................................................................................42.2网络传输协议...............................................................................................................42.2.1TCP/IP协议...........................................................................................................42.2.2TCP协议和UDP协议..........................................................................................52.3C/S编程模型................................................................................................................62.4WindowsSockets简介.................................................................................................72.5MFCWindowsSocket类.............................................................................................82.5.1CAsyncSocket异步类...........................................................................................82.5.2CSocket类..............................................................................................................82.6MFC多线程编程技术..................................................................................................92.7Access数据库.............................................................................................................103网络即时通信软件开发的系统需求分析........................................................................123.1系统实现目标.............................................................................................................123.2功能性需求描述.........................................................................................................124网络即时通信软件开发的系统总体设计........................................................................154.1系统体系结构设计.....................................................................................................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课题的背景及意义即时通信软件是互联网应用工具软件,它的出现使得即时通信变为可能。即时通信工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分,比如大家都很熟悉的腾讯QQ、MSN等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语言、视频的实时互通交流。作为重要的多媒体应用之一,网络即时通信的研究有很重要的意义。随着我国改革开放的不断深入和经济的迅速发展,信息、时间、效益等现代化的观念已深入人心,加之近年来我国的突飞猛进的通信网建设,作为现代化的通信手段之一的网络即时通信越来越受到人们的重视。如果采用网络即时通信的形式召开会议,既达到了开会的目的,又不需将大量时间花在旅途上,节约了时间和资金。不仅如此,网络即时通信实时性、交互性好的特点,使它在远程教育、远程医疗等方面也大有用武之地。1.2课题的国内外研究现状即时通信,几乎是每一个上网用户都必备的联络工具。即时通信软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通信软件还集成了文件共享、语音聊天、网络会议等功能。目前有两种架构形式:一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件;另一种采用B/S架构,及浏览器/服务端形式,这种形式的即时通讯软件,接借助互联网为媒介、端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商。到目前为止,ICQ和MSN是国外比较流行的网络聊天工具。ICQ是ISeekYou(我找你的缩写,中文名称目前可以称之为“网络呼叫器”。让用户知道网络上的朋友目前有没有在线是这种软件的主要功能,然后用户可以和朋友互相发送消息和资源共享等。MSN是微软发行的一款比较好的聊天工具,它是和ICQ比较类似的网上即时通信工具,它通过最简单的方法给用户提供很好的的即时通信,使MicrosoftOutlookExpress(R和MSNHotmail(R更简单好用。MSNMessengerService还可使用户之间的通信变得相对轻松愉快。用户间可以进行单独的聊天,也可以在同一个对话窗口中与多个人进行聊天。用语音取代键盘输入,使用户可以和与世界各地的朋友进行交流,可以把所发的文本消息发送到联系人的手机,也可以进入“聊天室”认识新的朋友。在中国大部分人都使用腾讯QQ进行网络通信。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具——腾讯即时通信TencentInstantMessenger,简称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.1OSI七层网络模型OSI网络模型是一个开放式系统互联的参考模型。通过这个参考模型,用户可以非常直观地了解网络通信的基本过程和原理。用户从OSI网络模型可以很直观地看到,网络数据从发送方到达接收方的过程中,数据的流向以及经过的通信层和相应的通信协议。事实上在网络通信的发送端,其通信数据每到一个通信层,都会被该层协议在数据中添加一个包头数据。而在接收方恰好相反,数据通过每一层是都会被该层协议剥去相应的包头数据。用户也可以这样理解,即网络模型中的各层都是对等通信[1]。在OSI七层网络模型中,各个网络层都具有各自的功能,如表2.1所示。表2.1各网络层的功能协议层名功能概述物理硬件层表示计算机网络中的物理设备。常见的有计算机网卡等数据链路层将传输数据进行压缩与加压缩网络层将传输数据进行网络传输数据传输层进行信息的网络传输会话层建立物理网络的连接表示层将传输数据以某种格式进行表示应用层应用程序接口2.2网络传输协议2.2.1TCP/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.2TCP协议和UDP协议IP协议只是单纯地负责将数据流分割成包,并依指定的IP地址通过网络传输到目的地,其需要配合不同的传输协议,如TCP协议(连接性与可信赖性或UDP协议(非连接性和不可信赖性,以便提供发送端与接收端主机间的连接和传输[6]。TCP提供了一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个客户端在彼此交换数据之前必须建立一个TCP连接。这一过程与打电话相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。端口号(Port用于寻找(识别发送端和接收端应用进程。UDP不提供可靠性,它只管把应用程序传给IP层的数据发送过去,但是不保证它们能到达目的地[7]。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协议(如TCP,但UDP协议有简单、快速、占用资源少的优点[8]。2.3C/S编程模型C/S(Client/Server,客户/服务器模型,该模型可以合理利用两端硬件环境优势,将任务合理分配到客户端和服务器,降低系统通信开销[9]。C/S体系结构如图2.2所示。图2.2C/S体系结构在客户端/服务器体系结构(C/S中,有一个总是打开的主机称为服务器,它服务于来自许多其它称为客户机的主机请求。客户端主机既可能有时打开,也可能总是打开。正如Web应用程序,其中总是打开的Web服务器服务于运行在客户端主机上的浏览器请求。当Web服务器接收到来自客户端对某对象的请求时,它向该客户端发送所请求的对象以作为响应。注意到客户端/服务器体系结构中,客户端相互之间不直接通信。例如,在Web应用中两个浏览器并不直接通信。客户端/服务器体系结构的另外一个特征是该服务器具有固定的、周知的IP地址。因为该服务器具有固定的、周知的地址,并且总处于打开状态,所以客户端总能够通过向该服务器的地址发送分组来与其联系。这种体系结构的优点是:方便对资源的统一管理,因为资源都在服务器上;结构简单,所有客户端都以服务器为中心。但是其缺点也是很明显的:因为大量的客户端对服务器进行访问,会在很大程度上增加服务器的负担,可能会造成服务器崩溃;容易出现单点故障,如果服务器崩溃,那么整个网络也就崩溃了。2.4WindowsSockets简介WindowsSockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口[10]。图2.3WindowsSockets实现通讯工作的各层关系图WindowsSockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP连接,尤其要指出的是所有的WindowsSockets实现都支持流套接口和数据报套接口,应用程序调用WindowsSockets的API实现相互之间的通信。WindowsSockets又利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。Socket控件可以供MicrosoftAcess、VisualBasic,VisualC++或VisualFoxpro的开发人员使用。Socket控件可以使用两种协议:TCP协议和UDP协议。Windowssockets无疑是我们进行网络编程的利器。所有的WindowsSockets实现都支持流套接口和数据报套接口。应用程序调用WindowsSockets的API实现相互之间的通信。WindowsSockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通信工作。它们之间的关系如图2.3所示。2.5MFCWindowsSocket类VC++在Windows下进行WinSock编程时,MFC对原来的WindowsSocketsAPI库函数进行了一系列封装,继而产生了CAsyncSocket类和CSocke类,它们封装了有关Socket的各种功能[11]。2.5.1CAsyncSocket异步类MFC提供了一个异步类CAsyncSockct,它封装了异步、非阻塞Socket的基本功能,用它做常用的网络通信软件很方便。它屏蔽了Socket的异步、非阻塞等概念,开发人员无需了解异步、非阻塞Socket的原理和工作机制。CAsyncSocket类的编程模型:(1调用类的构造函数创建CAsyncSocket对象。(2调用Create(函数创建Socket句柄。(3如果欲创建的套接字是客户端的,则调用函数Connect(向服务器套接字发送连接请求。如果是服务器端套接字,则调用函数Listen(开始侦听客户的连接请求;当收到连接请求后,调用函数Accept(接收该请求。(4调用Send(等功能函数进行数据传输与处理。(5关闭或销毁套接字对象。2.5.2CSocket类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.6MFC多线程编程技术MFC类库是一个很大的、扩展了的C++类层次结构,与传统上使用C语言直接访问WindowsAPI相反,MFC已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用C编写的Windows程序所必需的,因此用MFC编写的程序要比用C语言编写的程序小得多,当然MFC所编写的程序的性能也毫无损失[13]。必要时,也可以MFC可以用面向对象的方法来调用WindowsAPI,因为MFC不修改也不隐藏Windows程序的基本结构。MFC是很庞大的。Win32SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。VisualC++6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便[14]。CWinThread对象代表在一个应用程序内运行的线程。运行的主线程通常由CWinApp的派生类提供;CWinApp由CWinThread派生。另外,CWinThread对象允许给定的应用程序拥有多个线程。CWinThread支持两种线程类型:工作者线程和用户界面线程。工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。用户界面线程具有收发消息的功能,并处理从系统收到的消息。CWinApp及其派生类是用户界面线程的例子。其它用户界面线程也可由CWinThread直接派生。CWinThread类的对象存在于线程的生存期。要使代码和MFC是完全线程安全的,CWinThread类是完全必要的。框架使用的用来维护与线程相关的信息的线程局部数据由CWinThread对象管理。由于依赖CWinThread来处理线程局部数据,任何使用MFC的线程必须由MFC创建。例如,由运行时函数_beginthreadex创建的线程不能使用任何MFCAPI。为了创建一个线程,调用AfxBeginThread函数。根据需要工作者线程还是用户界面线程,有两种调用AfxBeginThread的格式。如果需要用户界面线程,则将指向CWinThread派生类的CRuntimeClass的指针传递给AfxBeginThread。如果需要创建工作者线程,则将指向控制函数的指针和控制函数的参数传递给AfxBeginThread。对于工作者线程和用户界面线程,可以指定可选的参数来修改优先级,堆栈大小,创建标志和安全属性。AfxBeginThread线程将返回指向新的CWinThread对象的指针。与调用AfxBeginThread相反,可以构造一个CWinThread派生类的对象,然后调用CreateThread。如果需要在连续创建和终止线程的执行之间重复使用CWinThread对象,这种两步构造方法非常有用。创建线程也可以使用API函数:CreateThread函数完成。2.7Access数据库Access是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务[15]。Access是一种关系型数据库管理系统,其主要特点如下:(1存储方式单一:Access管理的对象有表、查询、窗体、报表、页。宏和模块,以上对象都存放在后缀为(.mdb的数据库文件中,便于用户的操作和管理。(2面向对象:Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。(3界面友好、易操作:Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。(4集成环境、处理多种数据信息:Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。(5Access支持ODBC(开发数据库互连,OpenDataBaseConnectivity:利用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数据消息处理:客户端之间通过服务器端建立连接,并进行数据消息的传送。4.3功能模块调用关系服务器端的用户信息管理模块用于进行数据库的查询、修改、插入、删除操作,客户端的用户注册、用户登录、个人信息修改、查询用户信息、查看在线人员等模块都需要利用该模块与数据库进行交互。图4.3功能模块调用关系图服务器端的数据消息处理模块用于处理与网络通信相关的内容,客户端的消息传送模块、文件传输模块之间通过服务器端的数据消息处理模块进行交互,系统模块之间的调用关系如图4.3所示。5网络即时通信软件开发的系统详细设计系统详细设计是对系统各个具体模块的设计,也就是设计系统各个模块的实现方案。本章将对用户注册、用户登录、消息发送、文件传输、用户信息查询、个人信息修改、查看在线用户、启动停止服务、用户信息管理、数据消息处理等模块的具体实现流程进行描述。5.1客户端的详细设计(1用户注册模块的详细设计通过服务器端的用户信息管理模块来实现用户注册功能。用户只有通过注册的方式才可以在登录后与其他注册的在线用户进行信息的交流。注册的信息最重要的就是用户的昵称以及密码,当然还包括其他个人资料信息。用户唯一的标志是服务器提供的用户号码,当且仅当用户提出注册请求的时候,服务器才根据数据库中的信息提供新的用户一个用户号码,用户通过号码和个人密码进行后续的登录操作。用户注册模块流程图如图5.1所示。首先用户填写注册信息,密码、昵称、年龄、地区等。确认注册,通过对注册信息的审核,如果没通过审核,提示用户修改信息,通过审核则注册成功。图5.1用户注册模块流程图(2用户登录模块的详细设计通过服务器端的用户信息管理模块来实现用户登录功能。用户只有通过登录的方式才可以进行信息的交流和其他操作。用户的登录操作会在服务器进行相关的记录,服务器可以随时查询在线用户的信息。用户登录模块流程图如图5.2所示。首先用户输入用户名和密码,系统判断用户名密码是否为空,为空提示用户重新输入,不为空则通过用户信息管理模块在数据库中查找该用户名是否存在。不存在则提示用户重新输入,存在则验证密码是否正确。不正确则提示用户重新输入,正确则登录成功。图5.2用户登录模块流程图(3用户信息查询模块的详细设计通过服务器端的用户信息管理模块来实现用户信息查询的功能。对于某个用户,客户端向服务器发送查询该用户信息的请求,服务器操作数据库提取相关信息然后传送给客户端。客户端接收到用户信息后进行显示。用户信息查询模块流程图如图5.3所示。首先连接服务器端,发送查询用户信息请求。然后服务器端的用户信息管理模块对数据库进行查询,如果存在则将该用户的注册信息显示出来。图5.3用户信息查询模块流程图图5.4个人信息修改模块流程图(4个人信息修改模块的详细设计当用户需要修改自己资料的某一项时,比如自己的密码,自己的昵称等,用户将修改好的信息传送给服务器,服务器根据相关信息进行数据库的修改将该用户的资料更新。个人信息修改模块流程图如图5.4所示。首先向服务器端发送个人信息修改请求。然后服务器端用户信息管理模块对数据库进行操作,输入要修改的信息,判断是否符合要求。不符合则提示用户重新输入,符合要求则更新数据库文件。(5查看在线用户模块的详细设计通过查看在线用户模块,用户可以查看当前与服务器端相连的所有用户的列表。查看在线用户模块流程图如图5.5所示。首先将连接到服务器端的用户添加进在线用户列表,然后将用户列表中的用户昵称提取出来,最后将昵称以列表的形式显示。图5.5查看在线用户模块流程图(6消息传送模块的详细设计网络即时通信最基本的要求就是要进行通信消息的传送。具体表现为当一个用户需要向另一个用户发送消息的时候,只需要在用户在线列表中选择该用户,继而在弹出的对话框中输入通信内容,点击发送按钮后该消息将通过服务器的中转转发到接收方的客户端并弹出消息聊天对话框进行显示。消息传送模块流程图如图5.6所示。首先连接服务器端,通过服务器端与目标用户建立连接,并创建套接字。然后在聊天窗口中输入要发送的消息,点击发送按钮。如果目标用户的聊天窗口没有打开,则发送一个指令使目标打开聊天窗口。聊天窗口已经打开了,则直接接收并显示消息。最后判断是否发送完成,完成了则关闭套接字,消息发送过程完成。图5.6消息传送模块流程图(7文件传输模块的详细设计登录成功后的双方用户为了某种要求需要进行文件的传输,显然文件传输应该是点对点的并且使用TCP连接才能保证文件传输的可靠性。一方用户A点击文件传输的选项继而选择要传输的文件名,此时在该用户实际已经建立起一个TCP监听套接字,在另一方的客户B将接收到对于文件传输的接收请求,同意或者拒绝接收文件。文件传输模块流程图如图5.7所示。首先与服务器连接,通过服务器与目标用户建立连接并创建子套接字。然后选择需要传输的文件,点击发送。接下来目标用户选择是否接收文件,不接收则完成传输关闭子套接字,接收则选择文件存放位置并开始接收,文件接收完成时,关闭子套接字,文件传输过程完成。图5.7文件传输模块流程图5.2服务器的详细设计(1服务器启动停止模块的详细设计用户通过启动停止服务模块对整个系统的开启关闭进行控制。启动停止服务模块流程图如图5.8所示。首先点击启动或停止按钮,然后系统创建或关闭套接字,接着创建或关闭线程,最后开始或停止监听。(2用户信息管理模块的详细设计通过用户信息管理模块进行与数据库相关的用户注册、用户登录、个人信息修改、用户信息查询、查看在线用户等模块的操作。用户信息管理模块流程图如图5.9所示。首先开启侦听线程,一旦发现客户端的操作请求,然后用户信息管理模块打开数据库,并对数据库进行操作,最后保存。图5.8服务启动停止模块流程图图5.9用户信息管理模块流程图(3数据消息处理模块的详细设计用户之间通过数据消息传送模块建立连接之后,才能进行下一步的消息发送、文件传输等模块的操作。数据消息传送模块流程图如图5.10所示。图5.10数据消息处理模块流程图5.3数据库设计这一设计阶段是在需求分析的基础上进行的,目的是设计出能够满足用户需求的各种实体以及它们之间的关系,为逻辑结构设计打下基础。本系统主要涉及到的实体有:用户信息实体。用户信息实体图,如图5.11所示。用户信息表的具体描述如表5.1所示。表5.1用户信息表字段类型描述IDLong用户IDAGEint用户年龄ADDRESSChar[50]用户地区NICKNAMEChar[20]用户昵称PASSWORDChar[20]用户密码IDLong用户ID图5.11用户信息实体图6网络即时通信软件开发的系统实现系统实现是将结构化系统设计的成果变成可实际运行的系统的过程。本章将把系统的详细设计中的用户注册、用户登录、消息传送、文件传输、用户信息查询、个人信息修改、启动停止服务、查看在线用户、用户信息管理、数据消息处理等模块变成可实际运行的系统。6.1系统主框架的实现由于该系统基本架构为基于对话框的MFC应用程序,所以以主框架模块由两个类构成,它们都是由MFC应用程序向导所生成:CNetMsgServerApp类以及CNetMsgServerDlg类,类结构如图6.1和图6.2所示。其中以大写字母开头的为类成员函数,以小写字母m开头的为类成员数据。下面对这两个类的设计进行详细的说明。图6.1服务端两个主框架类结构示图图6.2客户端两个主框架类结构示图CNetMsgServerApp类为应用程序主框架类,它在后台完成了一个基于MFC的应用程序的所有基本的初始化工作,如果用户需要在程序的初始化时加入一些自定义的操作,只需在其中的InitInstance(函数中加入就可以了。在本程序中,只需要将WINDOWSSOCKETS的网络初始化工作完成。在每一个基于MFC的WIN32程序中,它都是通过一个由全局对象启动整个初始化过程的机制,因为根据C++的设计,一个全局对象的生成即其构造函数的调用要先于程序的入口函数。所以,在这个对象的构造函数中可以做很多准备工作,这个对象就是程序主框架类的对象,具体到本程序中,即是上面讲到的CNetMsgServerApp类。CNetMsgServerDlg类为应用程序主显示对话框类,它是由MFC的内部机制生成的一个类,这个类将被做为程序的主显示对话框类,它在整个系统的消息循环以及程序处理中起着非常重要的作用,绝大多数的用户交互都将在这个类的成员函数中定义并完成。6.2服务端功能模块的实现系统服务器端的功能模块主要包括:服务启动停止模块、用户信息管理模块和数据消息处理模块。(1启动停止服务模块的实现启动服务模块是基于CNetMsgServerDlg类的OnServerBegin(方法来实现的,其运行界面如图6.3所示。主程序启动后将建立两个线程,其中一个线程处理各个客户端的连接请求,另一个在客户端请求连接成功后处理接收到的命令并返回信息,包括用户注册、登录、查询修改某个在线用户的信息等。停止服务模块是基于CNetMsgServerDlg类的OnServerStop(方法来实现的。图6.3启动停止服务界面(2用户信息管理模块的实现用户信息管理模块是Global中的全局函数实现的。LoginIn函数用于用户登录。用户手动输入用户名和密码,检查用户名和密码是否正确,不正确则提示用户,正确就将该用户加入在线成员列表。RegisterUserInfo函数用于用户注册。用户输入注册信息,该函数读取数据库,读取成功后操作数据库存储信息。DealCommand函数用于用户信息修改、查看在线用户列表、用户信息查看。当用户登录成功后发送一个LIST命令,该函数就将在线用户列表发送给客户端界面。用户点击查看用户资料时发送一个GINF命令,该函数就读取该用户信息并显示。用户修改个人信息时发送一个UINF命令,该函数接收修改后的用户信息并修改数据库记录。(3数据消息处理模块的实现数据消息处理模块是Global中的全局函数实现的。SendRes函数提供数据发送的功能,调用WSAsend函数进行消息的发送。当函数成功返回时,返回值为实际发送的字节数。当函数调用失败时,返回SOCKET_ERROR。RecvReq函数用于接收数据,当有数据到达系统的时候触发该函数,该函数内部调用WSAsend函数进行消息的发送。当函数成功返回时,返回值为实际发送的字节数。当函数调用失败时,返回SOCKET_ERROR。6.3客户端功能模块的实现系统客户端的功能模块主要包括:用户注册模块、用户登录模块、用户信息查询模块、个人信息修改模块、查看在线用户、消息发送模块、文件传输模块。(1用户注册模块的实现用户注册模块是基于CLoginDlg类的OnRegister(方法来实现的。注册的信息最重要的就是用户的昵称以及密码,当然还包括其他个人资料信息。用户唯一的标志是服务器提供的用户号码,当且仅当用户提出注册请求的时候,服务器才根据数据库中的信息提供新的用户一个用户号码,用户通过号码和个人密码进行后续的登陆操作。用户输入注册信息:密码、昵称、性别、年龄、地区,点击确定注册成功,其运行界面如图6.4所示。(2用户登录模块的实现用户登录模块是基于CLoginDlg类的OnLogin(方法来实现的。通过服务器的用户管理,提供用户的登录功能。用户只有通过登录的方式才可以进入主界面获取在线用户列表,然后才可以进行信息的交流和其他操作。用户输入用户名和密码和服务器IP地址,系统数据库验证信息,登录成功,其运行界面如图6.5所示。图6.4用户注册界面图6.5用户登录界面(3用户信息查询模块的实现用户信息查询模块是基于CChatDlg类的OnShowinfo(方法来实现的。某用户可以查询到当前在线的用户信息。这里的信息主要是指用户号码,通过用户的号码来查询用户的昵称、地区、年龄、性别等信息。双击要的用户弹出对话框,点击查询资料按钮,想要查询的用户的注册信息就会显示出来,其运行界面如图6.6所示。图6.6用户信息查询界面(4个人信息修改模块的实现图6.7个人信息修改界面个人信息修改模块是基于CUpdateUserInfoDlg类的OnUpdateinfo(方法来实现的。当个人用户需要修改自己的某个资料时,比如自己的密码,自己的昵称等。用户将修改好的信息传送给服务器,服务器根据相关信息进行数据库的修改将该用户的资料更新。点击修改按钮,弹出修改用户资料对话框,修改资料后点击修改按钮保存,其运行界面如图6.7所示。(5查看在线用户模块的实现查看在线用户模块是基于CNetMsgClientDlg类的ShowOnlineUser(方法来实现的。如果在线人数为零,返回一个空表。否则,从在线用户列表中提取出用户昵称并以列表的形式显示出来,其运行界面如图6.8所示。图6.8查看在线用户界面图6.9消息传送界面(6消息传送模块的实现消息传送模块是基于CChatDlg类的OnSendmsg(方法来实现的。只需要在用户列表中选择该用户,继而在弹出的对话框中输入通信内容,点击发送按钮后该消息将通过服务器的中转转发到接收方的客户端并弹出消息聊天对话框进行显示。在用户列表中双击想要发送的用户,在输入窗口中输入想要发送的消息,点击发送消息按钮,发送给对方,其运行界面如图6.9所示。(7文件传输模块的实现文件传输模块是基于CChatDlg类的OnSendfile(方法来实现的。登录成功后的双方用户为了某种要求需要进行文件的传输,显然文件传输应该是点对点的并且使用TCP连接才能保证文件传输的可靠性。一方用户A点击文件传输的选项继而选择要传输的文件名,此时在该用户实际已经建立起一个TCP监听套接字,在另一方的客户B将接收到对于文件传输的接收请求,同意或者拒绝接收文件。在用户列表中双击想要发送的用户,点击发送文件按钮,提示选择发送的文件,其运行界面如图6.10所示。图6.10选择要发送的文件界面点击打开,等待对方确认接收,其运行界面如图6.11所示。图6.11确认接收界面选择保存地点并接收文件,接收完成后如图6.12所示。图6.12接收成功界面以上对系统主框架的实现做了具体的说明,并对系统服务器端的功能模块主要包括:服务启动停止模块、用户信息管理模块和数据消息传输模块和系统客户端的功能模块主要包括:用户注册模块、用户登录模块、消息传送模块、文件传输模块、用户信息查询模块、个人信息修改模块、查看在线用户模块的实现进行了说明。结论本文围绕着网络即时通信软件的设计展开研究,设计了一个基于VC++的网络即时通信系统。论文主要完成了以下几个工作:(1介绍了TCP/IP协议和UDP协议,并对TCP/IP的各层功能予以分析。并且剖析了TCP协议和UDP协议的异同。(2研究了MFC下软件开发、Socket编程和多线程开发等相关技术,分析了C/S模式的优缺点,剖析了Access数据库的主要特点。(3利用用例建模的方法获取并分析了系统的功能性需求,将系统功能划分为用户注册、用户登录、用户信息查询、个人信息修改、查看在线用户、消息传送、文件传输、服务启动停止、用户信息管理和数据消息处理等部分。(4按照系统的功能需求对系统的体系结构进行了设计,详细地分析了系统关键功能模块的执行流程。(5采用VC++作为开发平台,以C/S模式作为开发模式,实现了网络即时通信系统的关键功能。利用C++语言的面向对象特性,完成了系统主框架、服务器端各功能模块、客户端各功能模块的设计与实现。致谢毕业论文即将完成,我的学生生涯也要告一段落了。借此机会要对母校,亲人,老师和同学们表示感谢!再回首,母校的一草一木是那样熟悉;再回首,母校的一砖一瓦是那样亲切,在此对母校表示深深的感谢与怀念,感谢沈阳理工大学给我的学习机会!首先,我诚挚地感谢我的导师。她严谨的治学态度、对知识不懈的追求,必将使我受益终身。马老师在毕业设计过程中给予了我谆谆教诲和无私帮助。本论文从选题到系统调试成功到最后成文,无不倾注着马老师的心血。在论文撰写过程中,马老师认真的分析每个同学的论文,并且找出相应的错误,督促我们改正。在此论文脱稿之际,我再一次向她致以最诚挚的谢意。在我漫长的求学生涯中,倾注了父母一生的心血,是他们多年来的辛勤付出,使我能顺利完成学业。还要感谢我的同学们给我的支持和鼓励,使我一直以来能够坚持努力。在此给他们献上最诚挚的谢意和最深的祝福。感谢参考文献的所有作者,他们卓有成效的研究成果是笔者论文研究的基础。最后再次对关心、帮助、支持和鼓励我的所有领导、老师和同学表示诚挚的谢意!参考文献[1]谢希仁.计算机网络[M].第五版.北京:电子工业出版社,2008[2]龚正虎.计算机网络协议工程[M].长沙:国防科技大学出版社,1993[3]吴迪.网络基础[M].北京:电子工业出版社,2008[4]王天祥.基于TCP/IP的网络编程[D].北京:清华大学出版社,2008[5]陈磊.TCP/IP详解[M].北京:人民邮电出版社,1993.3[6]程永喜,蒋氓.基于TCP/IP协议的Winsock网络编程及应用[J].计算机时代,2004,21(8[7]牛晓磊.基于TCP/IP协议的安全即时通信系统设计与实现[D].西安:电子科技大学出版社,2007[8]曹衍龙,刘海英.VisualC++网络通信编程实用案例精选[M].第二版.北京:人民邮电出版社,2006[9]李红.基于C/S模式的SOCKET网络编程分析[J].湖北:现代商贸工业出版社,2009[10]孙海明.精通WindowsSockets网络开发——基于VisualC++实现[M].北京:人民邮电出版社,2008[11]侯俊杰.深入浅出MFC[M].第二版.湖北:华中科技大学出版社,2004[12]夏瑛,王家鼎,刘英华.在VC++6.0中利用CSocket类实现双机通讯[J].计算机应用,2001,S1[13]陈金勇.利用MFC实现网络通信编程[J].无线电通信技术,1999,25(6[14]林晓.多线程在网络程序设计中的应用[M].华侨大学学报,2006[15]郑小玲.Access数据库实用教程[M].北京:人民邮电出版社,2010[16]贾斌.网络编程技巧与实例[M].第四版.北京:人民邮电出版社,2001[17]王艳平,张越.Windows网络与通信程序设计[M].北京:人民邮电出版社,2006[18]汪晓平,钟军.VisualC++网络通信协议分析与应用实现[M].北京:人民邮电出版社,2003[19]罗莉琴,詹祖桥.Windows网络编程[M].北京:人民邮电出版社,2011[20]高守川,周树峰.Windows网络程序设计完全讲义[M].北京:中国水利水电出版社,2010[21]郎锐,孙芳.VisualC++网络通信程序开发基础及实例解析[M].北京:机械工程出版社,2006[22]郝蕴.VC++6.0开发与实例[M].第一版.北京:电子工业出版社,1999[23]杨志国.VC++的网络应用[M].北京:机械工业出版社,2008[24]乔林,杨志刚.VisualC++高级编程技术[M].北京:中国铁道出版社,2000[25]曲阳.VisualC++实效编程280例[M].北京:人民邮电出版社,2009[26]袁丁,傅一平.VisualC++精彩实例讲解[M].北京:机械工业出版社,2005[27]陈天华.面向对象程序设计与VisualC++6.0教程[M].北京:清华大学出版社,2006[28]贾琴勇.即时通讯系统的研究与实现[D].湖北:武汉理工大学出版社,2008.4[29]赵环宇,侯文君,顾文猆.网络聊天系统的设计与实现[J].电脑知识与技术,2006,2(2[30]胡朝晖,陈奇,俞瑞钊.面向对象的网络聊天服务器系统的设计[J].计算机应用,2000,20(8[31]王晋海.即时通信系统的研究与实现[D].广州:暨南大学出版社,2004[32]董苹苹.即时通文件传输审计系统的研究与实现[D].长沙:中南大学出版社,2011[33]杨沿航.即时通信系统的研究与实现[D].哈尔滨工程大学出版社,2007[34]DouglasE.Comer.InternetworkingwithTCP/IP,Volume1Principles,Protocols,andArchitecture(FifthEdition[M].北京:人民邮电出版社,2006[35]RichardStevens.TCP/IPIllustratedVolume1theProtocols[M].北京:机械工业出版社,2000[36]JeffProsise.ProgrammingWindowswithMFC(SecondEdition[M].北京:清华大学出版社,2002[37]AnthonyJones,JimOhlund.Windows网络编程[M].北京:清华大学出版社,2004.3[38]BjarneStroustrup.TheC++ProgrammingLanguge[M].北京:机械工业出版社,2011附录A英文原文InstantcommunicationInstantcommunicationreferstoimmediatelysendandreceiveInternetnewsetcbusiness.Since1998,especiallyinrecentyearssincethereappe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论