毕业论文--Linux下基于C++开发的即时通讯软件.doc_第1页
毕业论文--Linux下基于C++开发的即时通讯软件.doc_第2页
毕业论文--Linux下基于C++开发的即时通讯软件.doc_第3页
毕业论文--Linux下基于C++开发的即时通讯软件.doc_第4页
毕业论文--Linux下基于C++开发的即时通讯软件.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

班 级0906学 号院、(系)计算机科学与工程题目:Linux下基于C+开发的即时通讯软件学位申请人:吕 磊指导教师:张 娟学科专业: 探测制导与控制技术学位类别:工学学士2013年 06月20密 级本科毕业设计(论文)题目:Linux下基于C+开发的即时通讯软件院 系: 计算机科学与工程 学科专业:学 生: 吕 磊 学 号: 0 指导教师: 2013年 6月西安工业大学毕业设计(论文)任务书计算机科学与工程 院(系) 探测制导与控制技术 专业 090610 班 姓名 吕磊 学号 090610115 1.毕业设计(论文)题目: Linux下基于C+开发的即时通讯软件 2.题目背景和意义: 21世纪以计算机为代表的信息产业,标志着人类社会进入了信息时代,计算机网络的研究和发展。特别是Internet在全球的推广和应用,对全世界科学、经济和社会产生了重大影响。而网络通讯的出现又把全世界各个地方的人的距离拉得越来越近!随着互联网的普及,具有交互功能的应用软件日益受到亲睐,尤其是即时通讯软件ICS大受欢迎。163和263网站使用ICS的在线人数常达几万人,上百万人同时出现在腾讯QQ上。优秀的ICS确实为天南地北的人们的信息勾通提供了便利,对提高网站知名度起到了至关重要的作用, 国外有的公司甚至把ICS作为支柱软件推出。即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网络即时地传递文字信息、文件、语音与视频交流。它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术。即时通讯被认为比电子邮件更具有自发性,甚至能在进行实时文本对话的同时浏览网上信息。利用“即时通讯”工具,用户间可以实现异地文字、语言、视频的实时互通;同时,借助即时通讯工具,还可以帮助企业提高业务协同性及反馈的敏感度和快捷度。作为使用频率最高的网络软件,即时通讯已被认为是现代交流方式的新象征。本毕业设计就是模拟QQ聊天软件,开发一个包括文字聊天、保存用户信息等功能的即时通信软件。采用C/S架构,基于Linux平台开发,采用C+编程语言。由服务器端和客户端程序组成。采用ICE中间件,解除服务器和客户端的耦合。并使用QT进行图形界面的设计。主要实现的是聊天软件的部分功能,即文字聊天、图片文件传送、保存用户消息等功能。使用Linux开发的原因是Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。在Linux下编程的最佳语言应该是C语言,Linux上的很多应用程序就是用C语言写的。因为QT是用C/C+语言编写的,所以在开发LINUX下的GUI程序时使用C/C+语言是非常方便的。预期开发的软件非常实用,可以在多平台运行,有很大的应用价值。3.设计(论文)的主要内容(理工科含技术指标):要求在Linux操作系统环境下使用Microsoft QT编程软件,利用ICE中间件及SQLite开发一款即时通讯软件。该软件可以实现的功能:1、登录功能。2、申请新用户的功能。3、客户可以通过服务器转发,实现一对一的聊天。4、显示在线好友。5、服务器显示用户和状态。6、务器端可以保存用户的信息,同时将信息保存在文件和数据库中。7、客户端程序可以显示好友列表。8、应该具有易用、稳定的图形界面。9、系统实现保存聊天记录的功能。10、发送系统消息。11、服务器端保存错误日志。12、从数据库中读取保存用户信息。13、发送文字消息、文件、图片。4.设计的基本要求及进度安排(含起始时间、设计地点):1、基本要求:熟悉Linux系统环境,掌握C+、数据库、网络编程、ICE、QT相关知识,能够熟悉掌握Linux下环境下的编程平台,了解UC的相关库函数。2.毕业设计时间共18周,第 1 周:研究此项目所要解决的问题,确定软件功能需求。第 2-3周:进行整体方案的初步设计,整理初步设计方案。第4-8 周:着手编辑本系统运行所需要的各个模块,并测试。第9-13周:完成计划中系统的全部功能,做测试和修整。第14-15周:完成系统的整体测试。第16-18周:完成论文的撰写,为毕业答辩做准备。3.毕业设计地点:西安工业大学。 5.毕业设计(论文)的工作量要求 撰写15000字论文 实验(时数)或实习(天数): 300机时 图纸(幅面和张数): 其他要求:论文有老师辅导完成,不得抄袭,按进度完成,论文在现有功能可完善 指导教师签名: 年 月 日 学生签名: 吕磊 2012 年12 月 8 日 系(教研室)主任审批: 年 月 日说明:1本表一式二份,一份由学生装订入附件册,一份教师自留。2 带*项可根据学科特点选填。Linux下基于C+语言开发的即时通信软件摘 要网络通讯是目前计算机用户进行交流最普遍的方式,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。当前中国的互联网技术已经进入了一个飞速发展的时期,即时通讯工具作为当今网络应用的主流,越来越受到了人们的青睐,使人们的网上生活更加丰富多彩。当今使用最为广泛的即时通信工具,微软公司的MSN,腾讯公司的 QQ 聊天软件等为人们的工作和生活带来很大的便利。特别是对于腾讯来说,其公司的收益很大部分是归功于QQ庞大的客户群,并在此基础上拓展其他的业务。本毕业设计就是模拟 QQ 聊天软件,开发一个包括文字聊天、保存用户信息等功能的即时通信软件。 采用 C/S 架构,基于Linux平台开发,采用C+编程语言。由服务器端和客户端程序组成。采用ICE中间件,解除服务器和客户端的耦合。并使用QT进行图形界面的设计。主要实现的是聊天软件的部分功能,即文字聊天、保存用户消息等功能,主要完成的任务包括服务器模块的设计、文字聊天,保存用户信息等功能。通过运行、测试与分析,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词:聊天软件 文字聊天 Linux平台 C/S架构Linux-based instant messaging softwareusing C+ language developmentAbstractNetwork communication is the computer users to communicate the most common way, all kinds of chat software also emerge in endlessly; Service providers also provide more and more rich communication service functions. The current Chinas Internet technology has entered a rapid development period, instant communication tools as the network application of mainstream, more and more get the favour of people, make people online life more colorful. The most widely used instant communication tools, Microsofts MSN and QQ chat software the tecent company for peoples work and life bring great convenience. Especially for tencent speaking, the companys earnings, a large part is attributed to QQ large clientele, and based on this, expand the other business.The graduation design is simulated QQ chat software, the development of a text chat, group chat function of instant communication software.Using C/S structure, based on Linux platform development, the C+ programming language. And use QT for the design of the graphical interface. The realization of the main chat software is part of the function, which text chat, the function such as news group, the main task of the module design, including the server text chat, mass news etc. Function. Through the operation, test and analysis, the multifunctional chat software operation is stable, reliable, and has a certain practical value.Keywords: chat software text chat Linux platform C/S 目录摘 要IAbstractII1 前言11.1课题研究背景和现状11.1.1研究背景11.1.2研究现状和发展趋势11.2本课题研究的目的和意义21.3开发工具及工具简介21.3.1Linux操作系统21.3.2数据库SQLite21.3.3开发语言C+语言31.3.4 Qt编程软件32 即时通信软件系统总体设计52.1即使通信系统总体结构及总体需求52.2总体性能需求分析62.2.1服务器端性能需求62.2.2客户端端性能需求62.2.3错误处理需求63 程序设计方案73.1方案比较73.1.1采用TCP方式连接73.1.2采用UDP方式连接83.2方案比较83.3总体设计方案83.3.1服务器端功能模块划分83.3.2客户端端功能模块划分93.3.3UDP协议103.3.4TCP协议113.3.5消息标识定义123.3.6服务器接口函数134 即时通讯系统软件详细设计144.1服务器端设计思想144.2客户端设计思想164.3服务器端详细设计194.3.1服务器端主体194.3.2服务器端线程实现194.3.3服务器端函数实现204.4客户端图形界面详细设计214.4.1连接窗体224.4.2登陆窗体254.4.3注册窗体274.4.4用户窗体294.4.5对话窗体334.4.6服务器的界面详细设计385 结论415.1教训及经验总结415.2总结41参考文献43致 谢44毕业设计(论文)知识产权声明45毕业设计(论文)独创性声明46外文原文47中文翻译543前言1 前言1.1课题研究背景和现状1.1.1研究背景21世纪以计算机为代表的信息产业,标志着人类社会进入了信息时代,计算机网络的研究和发展。特别是Internet在全球的推广和应用,对全世界科学、经济和社会产生了重大影响。而网络通讯的出现又把全世界各个地方的人的距离拉得越来越近!随着互联网的普及,具有交互功能的应用软件日益受到亲睐,尤其是即时通讯软件ICS大受欢迎。163和263网站使用ICS的在线人数常达几万人,上百万人同时出现在腾讯的QQ上。优秀的ICS确 实为天南地北的人们的信息勾通提供了便利,对提高网站知名度起到了至关重要的作用, 国外有的公司甚至把ICS作为支柱软件推出。1.1.2研究现状和发展趋势自1990s,四位以色列人推出的ICQ后,IM首次出现,凭借实时在线的交互特性迅速风靡全球。如今,IM软件正逐渐成为一个集合了文字、视频、音频业务以及多种增值业务的多媒体网络通信软件,凭借其所具有的廉价性和方便性,以及功能不断完善,IM已经和WWW、Email等一起成为网民们最喜爱的网络服务之一。尤其在国内,腾讯QQ普及率远高于Email,在部分中国网民眼中上网基本等价于使用QQ等。2010年3月5日19时52分58秒,腾讯QQ同时在线用户数突破了1亿。截止到2009年3月18日,QQ官方宣布注册账户数量超过8.919亿,活跃账户数量超过3.766亿。近年来公共互联网上的即时通讯发展迅猛,并向着未来通信和协作的主要模式演化。这种演化主要表现为:从文本向话音、视频和多媒体演化;从固定网络向无线移动演化;从个人通信向企业即时通信和协作演化;在体系结构方面,从集中服务器向对等连接P2P演化;从专门系统向开放系统演化,推动实现不同系统的互通。总体看,是从即时通讯向新一代统一消息演化。西安工业大学毕业设计(论文)1.2本课题研究的目的和意义即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网络即时地传递文字信息、文件、语音与视频交流。它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术。即时通讯被认为比电子邮件更具有自发性,甚至能在进行实时文本对话的同时浏览网上信息。 利用“即时通讯”工具,用户间可以实现异地文字、语言、视频的实时互通;同时,借助即时通讯工具,还可以帮助企业提高业务协同性及反馈的敏感度和快捷度。作为使用频率最高的网络软件,即时通讯已被认为是现代交流方式的新象征。1.3开发工具及工具简介操作系统:Linux操作系统数据库:SQLite编程语言:C+语言开发工具:QT编程软件1.3.1Linux操作系统最早的Fedora Linux社区的目标是Red Hat Linux制作并发布第三方的软件包,然而当Red Hat Linux停止发行后,Fedora社区便集成到Red Hat赞助的Fedora Project,目标是开发出由社区支持的操作系统Red Hat,Enterprise Linux则取代Red Hat Linux成为官方支持的系统版本。 Fedora Core是众多Linux发行套件之一。它是一套从Red Hat Linux 发展出来的免费Linux 系统。现时Fedora最新的版本是Fedora16,Fedora是Linux发行版中更新最快的之一,通常每6个月发布一个正式的新版本。 Fedora和Red Hat这两个Linux的发行版联系很密切。Red Hat自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora 可以说是Red hat桌面版本的延续,只不过是与开源社区合作。1.3.2数据库SQLite数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布。1.3.3开发语言C+语言C+程序设计语言是由来自AT&T Bell Laboratories的Bjarne Stroustrup(即本文作者)设计和实现的,它兼具Simula语言在组织与设计方面的特性以及适用于系统程序设计的C语言设施。C+最初的版本被称作“带类的(C with classes)”Stroustrup,1980,在1980年被第一次投入使用;当时它只支持系统程序设计(3)和数据抽象技术(4.1)。支持面向对象程序设计的语言设施在1983年被加入C+;之后,面向对象设计方法和面向对象程序设计技术就逐渐进入了C+领域。在1985年,C+第一次投入商业市场Stroustrup,1986Stroustrup,1986b。在1987至1989年间,支持范型程序设计的语言设施也被加进了C+Ellis,1990Stroustrup,1991。 随着若干独立开发的C+实现产品的出现和广泛应用,正式的C+标准化工作在1990年启动。标准化工作由ANSI(American National Standard Institute)以及后来加入的ISO(International Standards Organization)负责。1998年正式发布了C+语言的国际标准C+,1998。在标准化工作进展期间,标准委员会充当了一个重要的角色,其发布的C+标准之草案在正式标准发布之前,一直被作为过渡标准而存在。1.3.4 Qt编程软件Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。在发布Qt 4.6 的同时,作为 Qt 开发跨平台 IDE 的 Qt Creator 也发布了更新版本。Qt Creator 1.3 和 Qt 4.6共同构成的 Qt SDK,包含了开发跨平台应用程序所需的全部功能。 Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。 Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括: 一个高级的C+代码编辑器 上下文感知帮助系统 可视化调试器 源代码管理 项目和构建管理工具 Qt Creator在LGPL2.1版本授权下有效,并且接受代码贡献。西安工业大学毕业设计(论文)即时通讯软件系统总体设计2 即时通信软件系统总体设计2.1即使通信系统总体结构及总体需求本系统是一个即时通讯程序,目前实现是在局域网下。本系统分为服务器和客户端两个应用程序,服务器负责管理客户端,客户端之间自由通讯。服务器端和客户端之间使用TCP协议进行通信。模块的工作方式如下:客户端客户端服务器 图2-1 服务器和客户端工作方式简图为了开发出符合要求的网络聊天程序,首先必须知道使用者的需求。对需求的深入理解是开发工作获得成功的前提条件,它对目标项目提出完整、准确、清晰、具体的要求。软件的功能需求:1、登录功能。2、申请新用户的功能。3、客户可以通过服务器转发,实现一对一的聊天。4、显示在线好友。5、服务器显示所有用户及状态。6、服务器端可以保存用户的信息,同时将信息保存在文件和数据库中。7、客户端程序可以显示好友列表。8、应该具有易用、稳定的图形界面。9、系统实现保存聊天记录的功能。10、发送系统消息。11、服务器端保存错误日志。12、从数据库中读取保存用户信息。西安工业大学毕业设计(论文)2.2总体性能需求分析2.2.1服务器端性能需求服务器需要同时连接很多个用户,并能提供给这些连接用户所需要的任务处理请求,这就要求服务器能同时处理多个客户端连接。服务器模型一般分为循环服务器和并发服务器,循环服务器一次只能处理一个连接,也就是说同一时间只能由一个用户连接到服务器进行消息处理,这种情况是不被允许的。因此我们将采用多线程方式的并发服务器来设计服务器端,这样将能从很大程度上提高服务器的运行效率。2.2.2客户端端性能需求客户端只需要连接到服务器便可以进行任务的处理工作,因此客户端的主要性能要求为图形界面运行的稳定性和对出错信息的及时反映。当一个窗体出现问题时能够及时的处理,让主程序不受影响。2.2.3错误处理需求所有的应用程序在运行过程中都会出现出错的情况,这种错误可能来自于程序本身的BUG也可能是用户操作的失误所造成的。当有错误发生时,我们应该有一个很好的机制来保障错误能够及时地被排除。因此,当应用程序出现了错误的时候我们就需要程序能提供给我们出错的信息,这样用户就能够很快的找出具体的出错原因,以便寻找合理的途径去解决它。程序设计方案3 程序设计方案3.1方案比较3.1.1采用TCP方式连接TCP方式连接的一个显著特点就是需要有服务器,这种类型的程序通常被称为客户机/服务器模式。客户机/服务器模型也是一种网络模型,它并不是定义了网络的层次结构,而是描述了一种网络程序运行的方式。客户及/服务器模型将网络应用程序分为客户和服务器两部分。客户方对服务器方发送信息请求,服务器方对其做出相应回答,提供服务。在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型设计的。服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户程序提出了请求信息。此时,服务程序被惊醒并且为客户提供服务,对客户的请求做出适当的反应。虽然基于连接的服务是设计客户/服务器应用程序的标准,但是通过运用中间件的原理,可以将客户端和服务端进行解耦合,使二者成为独立的一部分,服务器只需提供一个servant,而客户端只需获取servant的代理,二者就可以进行通信,甚至服务器端和客户端可以使用不同的语言来编写。当建立服务器程序时,应该将服务器程序设计成等候客户的请求。TCP传输层通过协议端口和应用程序通信,也就是说,为了接收客户请求,服务器程序必须对传输层的一个特定协议端口进行侦听。同时,客户与服务器这两个术语不是对应用的特定组成部分的严格指称,而是表示在某个请求从发生到结束期间,应用的某些部分所承担的角色: 客户是主动的实体。它们向服务器发出服务请求。 服务器是被动的实体。它们提供服务,响应客户请求。 在从不发出请求、而只是响应请求的意义上,许多服务器常常不是 “纯粹的”服务器:它们常常充当某些客户的服务器,但为了完成它们的客户的请求,它们又会充当另外的服务器的客户。与此类似,在只从某个对象那里请求服务的意义上,客户常常也不是“纯粹的”客户:它们常常是客户服务器混合物。例如,客户可以在服务器上启动一个长时间运行的操作,在启动该操作时,客户可以向服务器提供回调对象(callback object ),供服务器用于在操作完成时向客户发出通知。在这种情况下,客户在启动操西安工业大学毕业设计(论文)作时充当客户,而在接收操作完成通知时充当服务器。这样的角色反转在许多系统中都很常见,所以许多客户服务器系统常常可以被更准确地描述为对等(peer-to-peer )系统。3.1.2采用UDP方式连接采用UDP协议的程序不需要有服务器,两个程序之间可以通过无连接的方式进行通信,所以无连接是使用UDP协议程序的一个显著特点。使用无连接协议的程序和使用面向连接协议的服务器程序之间的主要相似之处是它们都必须对一个协议端口进行侦听。例如,无连接和连接服务器程序必须在协议端口侦听客户请求。同样,由于无连接客户程序没有和远地主机建立直接连接,所以它也必须对协议端口进行侦听,以便接收以对它服务请求产生的数据报应答。无连接客户程序也对一个协议端口进行侦听。使用无连接协议的程序不和远地主机建立直接连接。无连接客户程序使用数据报发送网络服务请求,它不建立点到点连接。因此无连接客户程序必须在一个协议端口,对应答数据报进行侦听。3.2方案比较综合以上分析,本软件开发选择方案如下:Linux操作系统,采用C+开发语言,TCP协议进行连接。采用C/S架构,运用ICE中间件连接服务器和客户端。系统界面美观内容丰富,很好的实现了服务器与用户、用户与用户的交互。3.3总体设计方案为实现网络聊天的功能,服务器与客户端采用了TCP/IP和UDP/IP方式连接,在设计聊天方案时,实行将所有信息发往服务器端,再由服务器进行分别处理的思路,服务器端是所有信息的中心。3.3.1服务器端功能模块划分服务器负责向各个客户端发布系统消息。接受来自客户端的各种信息并分别处理。针对这些操作,服务器做了如下的模块划分:处理登陆信息模块:检查登陆信息是否正确,并向客户端返回登陆信息。处理聊天信息模块:转发消息给指定的用户。处理申请信息模块:通过用户申请模块进行新用户的注册,保存该用户信息。发布系统消息模块:将消息发给各客户端,改写用户在服务器端和客户端的状态。服务器功能示意图:服务器端处理申请信息群发聊天信息处理登陆信息发布系统消息图3-1 服务器功能示意图3.3.2客户端端功能模块划分客户端主要负责处理用户的操作信息,当用户做出相应的动作时客户端应该能够及时地做出相应,当GTK图形程序检测到鼠标点击时,将触发一个事件,对该事件进行动作的定义和函数的编写便可完成相应的动作。因此,针对这些操作特性,将客户端模块进行如下划分:登陆功能模块:建立与服务器的连接并登陆,能显示登陆错误信息。界面显示模块:将在线好友显示在好友列表中,并显示其当前状态。聊天功能模块:处理各种聊天信息,并判断消息类型。修改信息模块:修改用户名字密码。配置信息模块:提供基本的软件配置操作。客户端功能示意图:客户端界面显示模块配置信息模块聊天功能模块修改信息模块登录到服务器图3-2 客户端功能示意图3.3.3UDP协议 UDP通讯模式图如下:初始化端口xxxx Yes No 接收数据绷带出错提示错误图3-3 UDP通信模式图 3.3.4TCP协议 TCP协议图如下: Server初始化套接字 接收 接收连接初始化套接字发送消息 绑定建立连接,三次握手 发送 Client监听接受连接阻塞直到客户连接到达 关闭 接收处理请求文件结束通知 关闭数据应答数据请求图3-4 TCP通信图 3.3.5消息标识定义消息头,包含发送者,信息内容,接受者 struct messagestring sender;string mes;string receiver;用户信息,包含姓名,密码,号码struct userinfostring name;string pwd;string no; 好友列表 sequence frilist消息队列 sequence messagelist用户-用户信息 dictionary userinfolist系统消息 sequence offlinemessage在线用户 sequence liveuser3.3.6服务器接口函数服务器接口funcpp,该接口提供以下操作:登入系统int Logins (string name, string pwd);注册用户int Regists (string name, string pwd, string picpath);获取用户名int Getusername (string name);获取用户状态String station()获取好友列表frilist Retfrilist(string name);新增加用户int Addfriend(string name,string friname);退出用户int Delfriend(string name,string friname);将用户信息写入文件int Writeofflinemesfile();读取文件中用户信息offlinemessage Readofflinemesfile();发送消息int Sendmessage(string recverrname,string sendername,string message,string sendtime);sendtime);获取是否在线 int Getstat(string name);添加日志 void writelog(string s);用户在线 int Loginser(string name); 即时通讯系统软件详细设计4 即时通讯系统软件详细设计4.1服务器端设计思想本系统软件产品的主要功能是实现网上聊天,可以让多个用户同时互相通信,有一个服务器,用于检查客户登陆请求,转发客户所发出的消息,并负责删除退出的用户。对服务器的某一可用端口进行监听,以获得客户端请求,从而对客户端请求进行处理。因为是多客户同时请求,所以要采用多线程,为每一个在线用户分配一个线程,实时处理每个客户端的请求。服务器端要求实现公共数据处理,处理公共数据,客户数据资料的存储与读取,聊天记录资料的存取和读取等。端口监听器,监听服务器某一端口,为每一在线客户建立一个会话线程。客户请求处理处理客户的请求,根据客户的请求执行相应的操作。服务器运行后即处于监听状态,当监听到有连接请求时服务器进入消息处理流程,因为服务器为并发服务器,所以可以同时对多个请求做出相应。由于服务器与客户端是相互独立的,启动服务器后,服务器等待客户端与之相连,同时,服务器本身可以做相应的操作:从数据库读取用户信息、从文件中读取用户信息、将用户信息保存到数据库中(当有新用户注册时)、用户信息保存到文件中(当有新用户注册时)。西安工业大学毕业设计(论文)服务器工作方式简图如下:图4-1 服务器工作方式简图4.2客户端设计思想本系统软件产品的主要功能是实现网上聊天,可以让多个用户同时互相通信,有一个服服务器,用于检查客户登陆请求,转发客户所发出的消息,并负责删除退出的用户.服务器任务为从数据库读取用户信息、从文件中读取用户信息、将用户信息保存到数据库中(当有新用户注册时)、用户信息保存到文件中(当有新用户注册时)。其主要是在后台工作。而对于客户端,其主要的功能是实现用户之间的通信,用稳定的图形化界面表示客户端,以便直观的进行通信。客户端包含以下界面:登陆界面、程序主窗口、聊天界面、注册用户界面、弹出离线消息窗口、添加删除好友窗口。下图为客户端前台窗口工作方式简图:图4-2 客户端前台窗口工作方式简图客户端运行后首先要用户登录到服务器,如果登陆成功服务器会将在线的用户联系人列表发送给客户端,此时客户端即可显示有哪些好友在线而哪些是离线的。当用户点击在线好友时便会弹出一个聊天信息窗体,该窗体用于发送和接收用户的聊天信息。当用户点击离线用户时便会触发一个离线消息事件,该事件通过服务器转发方式发送给离线用户,当对方上线时便可查看该离线消息。服务器程序启动后,如服务器流程图所示,通过双线程,同时启动ICE的Server端和ICE的Client端,服务器的Server端用来等待客户端的Client连接,服务器的Client端用来连接客户端的Server端。启动客户端,通过IP和端口号连接上服务器的Server端,同时客户端启动自身的Server端,此时服务器的Client端连接客户端的Server端,此时,客户端与服务器之间建立了连接。客户端服务器连接后,服务器通过创建通信器以及适配器,并在通信器中建立Servant以便客户端调用。下图为服务器和客户端之间连接方式(ICE的C/S连接)的简图:图4-3 ICE下服务器和客户端工作方式简图客户端后台工作方式简图如下:图4-4 客户端后台工作方式简图4.3服务器端详细设计4.3.1服务器端主体服务器主体函数主要涉及是创建两个线程,一个是Server端线程,一个Clinet端线程。Server端线程负责提供连接,供客户端的Client端连接;Client端负责连接Client端。创建两个新线程:IceUtil:ThreadPtr st = new serverthread;IceUtil:ThreadPtr ct = new clientthread;启动线程:IceUtil:ThreadControl tst = st-start();IceUtil:ThreadControl tct = ct-start();4.3.2服务器端线程实现服务器有两个类serverthread和clientthread,继承自基类IceUtil:Thread,两个类的public的run()方法用来启动ICE线程。serverthread类的run方法完成工作是:初始化通信器,创建适配器,建立Servant,将Servant加入通信器,激活通信器,然后等待连接,同时完成工作后关闭通信器。clientthread类的run方法完成的工作是:初始化通信器,创建适配器,建立server端的代理,查找相应的Servant代理,通过代理调用相应接口。在clientthread类的run方法中,通过代理调用相应的接口函数,加上选择机制,可以完成服务器端的四个功能:从数据库读取用户信息、从文件中读取用户信息、将用户信息保存到数据库中(当有新用户注册时)、用户信息保存到文件中(当有新用户注册时)。在服务器和客户端连接时,二者相连的端口号直接写入了配置文件,这样就无需用硬写入的方式在程序中就写入连接的IP和端口号,从而方便了我们以后可以修改,而不必改变整个程序,ICE的配置文件的方式提供了这样的方便。Ice 属性机制提供了一种简单的配置 Ice 的途径,你可以在配置文件中、或在命令行上设置属性。这也适用于你自己的应用:你可以轻松地使用Properties接口,访问你为自己的需要而创建的、应用专用的属性。用于访问属性值的 API 小而简单,所以要在运行时用它获取属性值很容易;这个 API 还很灵活,如果有需要,它能让你使用多个不同的属性集和配置文件。4.3.3服务器端函数实现服务器端提供以下函数的实现:登入系统int Logins (string name, string pwd);注册用户int Regists (string name, string pwd, string picpath);获取用户名int Getusername (string name);获取用户头像string Getfripic(string name);获取好友列表frilist Retfrilist (string name);添加好友int Addfriend(string name,string friname);删除好友int Delfriend(string name,string friname);将用户信息写入文件int Writeofflinemesfile();读取文件中用户信息offlinemessage Readofflinemesfile();发送消息int Sendmessage(string recverrname,string sendername,string message,string sendtime);发送离线消息int Sendofflinemes(string recvername,string sendername,string message,string sendtime);获取消息message Getmessage(string recvername,string sendername);获取是否在线int Getstat(string name);获取消息数量int Getmessagenum();获取系统消息数量int Getsysnum();获取系统消息message Getsysmessage(string recvername);获取当前时间char* currenttime(char* curtime, const char* format);添加日志void writelog(string s);用户在线 int Loginser(string name); 离线用户 int Logoutser(string name);4.4客户端图形界面详细设计即时通信软件的客户端是使用图形用户界面来实现的,程序运行后激活主窗体,在主窗体上点击设置为敏感状态的按钮就会产生相应的事件,该事件将会触发一个消息驱动所指定的函数来处理这个操作。本软件使用QT图形界面来实现,其具有以下优点:面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。Qt 提供了一种称为signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单;丰富的API:Qt包括多达 250个以上的 C+ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。登陆界面的设计是整个客户端的切入点,客户端的整个设计都是在图形界面下完成的。图形用户界面或图形用户接口(Graphical User Interface,GUI)是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是可用通过窗口、菜单、按键等方式来方便地进

温馨提示

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

评论

0/150

提交评论