毕业论文--Linux下基于C++开发的即时通讯软件.docx
- 文档编号:4366740
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:69
- 大小:608.10KB
毕业论文--Linux下基于C++开发的即时通讯软件.docx
《毕业论文--Linux下基于C++开发的即时通讯软件.docx》由会员分享,可在线阅读,更多相关《毕业论文--Linux下基于C++开发的即时通讯软件.docx(69页珍藏版)》请在冰豆网上搜索。
Linux下基于C++开发的
即时通讯软件
题目:
班级
0906
学号
院、(系)
计算机科学与工程
学位申请人:
XX
指导教师:
XX
学科专业:
探测制导与控制技术
学位类别:
工学学士
2013年06月20
密级
本科毕业设计(论文)
题目:
Linux下基于C++开发的即时通讯软件
院系:
计算机科学与工程
学科专业:
学生:
XX
学号:
0
指导教师:
2013年6月
西安工业大学毕业设计(论文)任务书
计算机科学与工程院(系)探测制导与控制技术专业090610班
姓名XX 学号090610115
1.毕业设计(论文)题目:
Linux下基于C++开发的即时通讯软件
2.题目背景和意义:
21世纪以计算机为代表的信息产业,标志着人类社会进入了信息时代,计算机网络的研究和发展。
特别是Internet在全球的推广和应用,对全世界科学、经济和社会产生了重大影响。
而网络通讯的出现又把全世界各个地方的人的距离拉得越来越近!
随着互联网的普及,具有交互功能的应用软件日益受到亲睐,尤其是即时通讯软件ICS大受欢迎。
163和263网站使用ICS的在线人数常达几万人,上百万人同时出现在腾讯QQ上。
优秀的ICS确实为天南地北的人们的信息勾通提供了便利,对提高网站知名度起到了至关重要的作用,国外有的公司甚至把ICS作为支柱软件推出。
即时通讯(Instantmessaging,简称IM)是——个终端服务,允许两人或多人使用网络即时地传递文字信息、文件、语音与视频交流。
它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术。
即时通讯被认为比电子邮件更具有自发性,甚至能在进行实时文本对话的同时浏览网上信息。
利用“即时通讯”工具,用户间可以实现异地文字、语言、视频的实时互通;同时,借助即时通讯工具,还可以帮助企业提高业务协同性及反馈的敏感度和快捷度。
作为使用频率最高的网络软件,即时通讯已被认为是现代交流方式的新象征。
本毕业设计就是模拟QQ聊天软件,开发一个包括文字聊天、保存用户信息等功能的即时通信软件。
采用C/S架构,基于Linux平台开发,采用C++编程语言。
由服务器端和客户端程序组成。
采用ICE中间件,解除服务器和客户端的耦合。
并使用QT进行图形界面的设计。
主要实现的是聊天软件的部分功能,即文字聊天、图片文件传送、保存用户消息等功能。
使用Linux开发的原因是Linux操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!
只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。
在Linux下编程的最佳语言应该是C语言,Linux上的很多应用程序就是用C语言写的。
因为QT是用C/C++语言编写的,所以在开发LINUX下的GUI程序时使用C/C++语言是非常方便的。
预期开发的软件非常实用,可以在多平台运行,有很大的应用价值。
3.设计(论文)的主要内容(理工科含技术指标):
要求在Linux操作系统环境下使用MicrosoftQT编程软件,利用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-basedinstantmessagingsoftwareusing
C++languagedevelopment
Abstract
Networkcommunicationisthecomputeruserstocommunicatethemostcommonway,allkindsofchatsoftwarealsoemergeinendlessly;Serviceprovidersalsoprovidemoreandmorerichcommunicationservicefunctions.ThecurrentChina'sInternettechnologyhasenteredarapiddevelopmentperiod,instantcommunicationtoolsasthenetworkapplicationofmainstream,moreandmoregetthefavourofpeople,makepeopleonlinelifemorecolorful.Themostwidelyusedinstantcommunicationtools,MicrosoftsMSNandQQchatsoftwarethetecentcompanyforpeople'sworkandlifebringgreatconvenience.Especiallyfortencentspeaking,thecompany'searnings,alargepartisattributedtoQQlargeclientele,andbasedonthis,expandtheotherbusiness.
ThegraduationdesignissimulatedQQchatsoftware,thedevelopmentofatextchat,groupchatfunctionofinstantcommunicationsoftware.
UsingC/Sstructure,basedonLinuxplatformdevelopment,theC++programminglanguage.AnduseQTforthedesignofthegraphicalinterface.Therealizationofthemainchatsoftwareispartofthefunction,whichtextchat,thefunctionsuchasnewsgroup,themaintaskofthemoduledesign,includingtheservertextchat,massnewsetc.Function.Throughtheoperation,testandanalysis,themultifunctionalchatsoftwareoperationisstable,reliable,andhasacertainpracticalvalue.
Keywords:
chatsoftwaretextchatLinuxplatformC/S
目录
摘要 I
Abstract II
1前言 1
1.1课题研究背景和现状 1
1.1.1研究背景 1
2.1.2研究现状和发展趋势 1
1.2本课题研究的目的和意义 1
1.3发工具及工具简介 1
1.3.ILinux操作系统 1
1.3.2数据库SQLite 2
1.3.3开发语言C++语言 2
1.3.4Qt编程软件 3
2即时通信软件系统总体设计 1
2.1即使通信系统总体结构及总体需求 1
2.2总体性能需求分析 2
2.2.1服务器端性能需求 2
3.2.2客户端端性能需求 2
2.2.3错误处理需求 2
3程序设计方案 1
3.1方案比较 1
3.1.1采用TCP方式连接 1
3.1.2采用UDP方式连接 1
3.2方案比较 1
3.3总体设计方案 1
3.3.1服务器端功能模块划分 1
in
3.3.2客户端端功能模块划分 2
3.3.3UDP协议 3
3.3.4TCP协议 4
3.3.5消息标识定义 5
4.3.6服务器接口函数 6
4即时通讯系统软件详细设计 1
4.1服务器端设计思想 1
4.2客户端设计思想 2
4.3服务器端详细设计 5
4.3.1服务器端主体 5
4.3.2服务器端线程实现 5
4.3.3服务器端函数实现 6
4.4客户端图形界面详细设计 7
4.4.1连接窗体 8
4.4.2登陆窗体 11
4.4.3注册窗体 13
4.4.4用户窗体 15
4.4.5对话窗体 19
5.4.6服务器的界面详细设计 24
5结论 2
5.1教训及经验总结 2
6.2总结 2
参考文献 1
致谢 1
毕业设计(论文)知识产权声明 1
毕业设计(论文)独创性声明 1
外文原文 1
中文翻译 1
1前言
1.1课题研究背景和现状
1.1.1研究背景
21世纪以计算机为代表的信息产业,标志着人类社会进入了信息时代,计算机网络的研究和发展。
特别是Internet在全球的推广和应用,对全世界科学、经济和社会产生了重大影响。
而网络通讯的出现又把全世界各个地方的人的距离拉得越来越近!
随着互联网的普及,具有交互功能的应用软件日益受到亲睐,尤其是即时通讯软件ICS大受欢迎。
163和263网站使用ICS的在线人数常达几万人,上百万人同时出现在腾讯的QQ上。
优秀的ICS确实为天南地北的人们的信息勾通提供了便利,对提高网站知名度起到了至关重要的作用,国外有的公司甚至把ICS作为支柱软件推出。
2.L2研究现状和发展趋势
自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本课题研究的目的和意义
即时通讯(Instantmessaging,简称IM)是一个终端服务,允许两人或多人使用网络即时地传递文字信息、文件、语音与视频交流。
它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术。
即时通讯被认为比电子邮件更具有自发性,甚至能在进行实时文本对话的同时浏览网上信息。
利用“即时通讯”工具,用户间可以实现异地文字、语言、视频的实时互通;同时,借助即时通讯工具,还可以帮助企业提高业务协同性及反馈的敏感度和快捷度。
作为使用频率最高的网络软件,即时通讯已被认为是现代交流方式的新象征。
1.3开发工具及工具简介
操作系统:
Linux操作系统
数据库:
SQLite
编程语言:
C++语言
开发工具:
QT编程软件
1.3.ILinux操作系统
最早的FedoraLinux社区的目标是RedHatLinux制作并发布第三方的软件包,然而当RedHatLinux停止发行后,Fedora社区便集成到RedHat赞助的FedoraProject,目标是开发出由社区支持的操作系统RedHat,EnterpriseLinux则取代RedHatLinux成为官方支持的系统版本。
FedoraCore是众多Linux发行套件之一。
它是一套从RedHatLinux发展出来的免费Linux系统。
现时Fedora最新的版本是Fedoral6,Fedora是Linux发行版中更新最快的之一,通常每6个月发布一个正式的新版本。
Fedora和RedHat这两个Linux的发行版联系很密切。
RedHat自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora这个Linux发行版。
Fedora可以说是Redhat桌面版本的延续,只不过是与开源社区合作。
1.3.2数据库SQLite
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。
这种数据集合具有如下特点:
尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、册h改和检索由统一软件进行管理和控制。
从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,可能只需要几百K的内存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tel、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
SQUte第一个Alpha版本诞生于2000年5月。
至今已经有12个年头,SQLite也迎来了一个版本SQLite3已经发布。
1.3.3开发语言C++语言
C++程序设计语言是由来自AT&TBellLaboratories的BjarneStroustrup(即本文作者)设计和实现的,它兼具Simula语言在组织与设计方面的特性以及适用于系统程序设计的C语言设施。
C++最初的版本被称作“带类的(Cwithclasses)[Stroustrup,1980],在1980年被第一次投入使用;当时它只支持系统程序设计(§3)和数据抽象技术(§4.1)o支持面向对象程序设计的语言设施在1983年被加入C++;之后,面向对象设计方法和面向对象程序设计技术就逐渐进入了C++领域。
在1985年,C++第一次投入商业市场[Stroustrup,1986][Stroustrup,1986b]。
在1987至1989年间,支持范型程序设计的语言设施也被加进了C++[Ellis,1990][Stroustrup,1991]o
随着若干独立开发的C++实现产品的出现和广泛应用,正式的C++标准化工作在1990年启动。
标准化工作由ANSI(AmericanNationalStandardInstitute)以及后来加入的ISO(InternationalStandardsOrganization)负责。
1998年正式发布了C++语言的国际标准[C++,1998]。
在标准化工作进展期间,标准委员会充当了一个重要的角色,其发布的C++标准之草案在正式标准发布之前,一直被作为过渡标准而存在。
1.3.4Qt编程软件
Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。
它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。
Qt是面向对象语言,易于扩展,并且允许组件编程。
2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。
在发布Qt4.6的同时,作为Qt开发跨平台IDE的QtCreator也发布了更新版本。
QtCreator1.3和Qt4.6共同构成的QtSDK,包含了开发跨平台应用程序所需的全部功能。
QtCreator是一个用于Qt开发的轻量级跨平台集成开发环境。
QtCreator可带来两大关键益处:
提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。
QtCreator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:
一个高级的C++代码编辑器上下文感知帮助系统可视化调试器源代码管理项目和构建管理工具QtCreator在LGPL2.1版本授权下有效,并且接受代码贡献。
2即时通信软件系统总体设计
2.1即使通信系统总体结构及总体需求
本系统是一个即时通讯程序,目前实现是在局域网下。
本系统分为服务器和客户端两个应用程序,服务器负责管理客户端,客户端之间自由通讯。
服务器端和客户端之间使用TCP协议进行通信。
模块的工作方式如下:
图2-1服务器和客户端工作方式简图
为了开发出符合要求的网络聊天程序,首先必须知道使用者的需求。
对需求的深入理解是开发工作获得成功的前提条件,它对目标项目提出完整、准确、清晰、具体的要求。
软件的功能需求:
1、登录功能。
2、申请新用户的功能。
3、客户可以通过服务器转发,实现一对一的聊天。
4、显示在线好友。
5、服务器显示所有用户及状态。
6、服务器端可以保存用户的信息,同时将信息保存在文件和数据库中。
7、客户端程序可以显示好友列表。
8、应该具有易用、稳定的图形界面。
9、系统实现保存聊天记录的功能。
10、发送系统消息。
11、服务器端保存错误日志。
12、从数据库中读取保存用户信息。
1
2.2总体性能需求分析
2.2.1服务器端性能需求
服务器需要同时连接很多个用户,并能提供给这些连接用户所需要的任务处理请求,这就要求服务器能同时处理多个客户端连接。
服务器模型一般分为循环服务器和并发服务器,循环服务器一次只能处理一个连接,也就是说同一时间只能由一个用户连接到服务器进行消息处理,这种情况是不被允许的。
因此我们将采用多线程方式的并发服务器来设计服务器端,这样将能从很大程度上提高服务器的运行效率。
3.2.2客户端端性能需求
客户端只需要连接到服务器便可以进行任务的处理工作,因此客户端的主要性能要求为图形界面运行的稳定性和对出错信息的及时反映。
当一个窗体出现问题时能够及时的处理,让主程序不受影响。
4.2.3错误处理需求
所有的应用程序在运行过程中都会出现出错的情况,这种错误可能来自于程序本身的BUG也可能是用户操作的失误所造成的。
当有错误发生时,我们应该有一个很好的机制来保障错误能够及时地被排除。
因此,当应用程序出现了错误的时候我们就需要程序能提供给我们出错的信息,这样用户就能够很快的找出具体的出错原因,以便寻找合理的途径去解决它。
程序设计方案
3程序设计方案
4.1方案比较
5.1.1采用TCP方式连接
TCP方式连接的一个显著特点就是需要有服务器,这种类型的程序通常被称为客户机/服务器模式。
客户机/服务器模型也是一种网络模型,它并不是定义了网络的层次结构,而是描述了一种网络程序运行的方式。
客户及/服务器模型将网络应用程序分为客户和服务器两部分。
客户方对服务器方发送信息请求,服务器方对其做出相应回答,提供服务。
在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型设计的。
服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户程序提出了请求信息。
此时,服务程序被“惊醒”并且为客户提供服务,对客户的请求做出适当的反应。
虽然基于连接的服务是设计客户/服务器应用程序的标准,但是通过运用中间件的原理,可以将客户端和服务端进行解耦合,使二者成为独立的一部分,服务器只需提供一个servant,而客户端只需获取servant的代理,二者就可以进行通信,甚至服务器端和客户端可以使用不同的语言来编写。
当建立服务器程序时,应该将服务器程序设计成等候客户的请求。
TCP传输层通过协议端口和应用程序通信,也就是说,为了接收客户请求,服务器程序必须对传输层的一个特定协议端口进行侦听。
同时,客户与服务器这两个术语不是对应用的特定组成部分的严格指称,而是表示在某个请求从发生到结束期间,应用的某些部分所承担的角色:
客户是主动的实体。
它们向服务器发出服务请求。
服务器是被动的实体。
它们提供服务,响应客户请求。
在从不发出请求、而只是响应请求的意义上,许多服务器常常不是“纯粹的”服务器:
它们常常充当某些客户的服务器,但为了完成它们的客户的请求,它们又会充当另外的服务器的客户。
与此类似,在只从某个对象那里请求服务的意义上,客户常常也不是,,纯粹的,,客户:
它们常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 Linux 基于 C+ 开发 即时通讯 软件